Websocket Client mit Binary Transfer

Hi,

Ich bin gerade dabei ein Modul zur Einbindung meines Roon-Server zu erstellen, allerdings verwendet die API die Websockets mit Binary-Transfer. Die aktuelle Implementation von WFC_SendMessage scheint hier nur das Senden von Text zu ermöglichen, oder übersehe ich etwas?

API mit Node.js als Referenz:

Gruß Bernd

Korrekt, wir unterstützen bisher den Binary Transfer nicht. Unterstützt das Gerät ggf. nicht auch den Text Modus?

paresy

Leider keine Unterstützung für den Textmodus, hatte es mal mit einem kleinen Python-Skript probiert: Der gleiche String als Textmodus wird komplett ignoriert, versende ich den String als Binary werden die Befehle verarbeitet.

Gruß Bernd

Ich würde mich auch freuen, wenn der Websocket das Senden und Empfangen von binären Daten unterstützen würde (benötige ich im EchoRemote Modul).

Nach meinem (nicht sehr tiefem) Verständnis von Websockets müssten wir dazu (in einem erweiterten Datenpaket?) den Opcode mit übergeben bzw. empfangen können.

Zur nächsten 7.0er Version kannst du im „WebSocket Client“ den Typ zwischen Text und Binär in der Instanz Konfiguration umschalten. Ich freue mich sehr über dein Feedback!

Ebenso wird es für das WebHook Control passende Funktionen geben:
WC_PushMessageText und WC_PushMessageBinary

Dabei wird es nicht mehr erforderlich sein beim Hook das /hook/ mitzugeben. Davon wird jetzt entsprechend ausgegangen.

paresy

Muss ich noch irgendwas bei der Codierung beachten, wenn ich mittels WSC_SendMessage() einen binär string übergeben will?

Nein. Nur in den Eigenschaften den Typ passend umstellen.

paresy

Ich habe da irgendwo noch ein Problem. Wenn ich das folgende Skript ausführe, wird nicht das gesendet, was ich eigentlich senden möchte (das Ergebnis von bin2hex wäre das richtige):

$msg = pack('N', 200);
WSC_SendMessage(17617, $msg);
echo bin2hex($msg)."\n";

bin2hex liefert: 000000c8
Gesendet wird aber (laut Debug): 00 00 00 C3 88