Kann eine WebSocket-Schalter sein "binaryType" on-the-fly?
In JavaScript, wenn Sie instanziieren ein WebSocket:
ws = new WebSocket(url);
können Sie es "binaryType":
ws.binaryType = "blob";
//or
ws.binaryType = "arraybuffer";
Frage:
Kann ich das ändern "binaryType" on-the-fly?
Zum Beispiel, wenn ich wollte verwenden die gleiche WS-Instanz interleave sowohl text-und Binär-Nachrichten, könnte ich Folgendes tun?
ws = new WebSocket(url);
//Send text
ws.binaryType = "blob";
ws.send("this is text");
//Now send binary data
ws.binaryType = "arraybuffer";
var ab = new ArrayBuffer(...);
ws.send(ab);
Beim Lesen der W3C WebSocket-Spezifikation, ich habe nichts gesehen, die explizit sagt "du kannst das nicht ändern "binaryType" -", aber jedes Beispiel/Verwendung von WebSocket, dass ich gesehen habe, setzt "binaryType" - einmal, dann nie verpasst es, die sorta deutet darauf hin, dass es nicht geändert werden kann.
Jede info würde geschätzt.
- Nur weil Sie nicht jedes Szenario als ein Beispiel, bedeutet nicht, es ist nicht möglich. Haben Sie versucht, etwas selbst?
- Ich würde vorschlagen, es zu versuchen, auf ein paar verschiedenen Browsern (und Versionen) zu sehen. Ich glaube nicht, dass es wahrscheinlich eine gute Idee in jedem Fall. Ich denke, dass die meisten Menschen sind mit der Abstraktion Layer, Verbindung fallbacks/fallforwards wie socket.io und SignalR. ymmv.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ändern Sie die "binaryType" on-the-fly, aber es wirkt sich nur auf den Datentyp der empfangenen Nachrichten. Zum senden von Binärdaten sind, müssen Sie entweder senden Sie eine blob-oder ein Typ-array. Wenn Sie senden einen string, es wird immer gesendet werden (und geliefert) als string. In das wire-Protokoll, eine Nachricht kann entweder 'text' bedeutet, der Absender gesendeten Daten codiert als string, oder es kann sein, 'binary', was bedeutet, dass die Nachricht enthält eine raw-kodierte byte-stream. Die "binarytype" - zeigt an, wie diese Rohdaten geliefert werden sollte, die Anwendung.
In anderen Worten, wenn Sie "binaryType" - es bedeutet, dass das nächste mal die message-handler feuert zum Empfang einer binären Nachricht, dass die event-Daten-Typ "binaryType".