12

JavaScript で WebSocket をインスタンス化すると、次のようになります。

ws = new WebSocket(url);

binaryType を設定できます。

ws.binaryType = "blob";
// or
ws.binaryType = "arraybuffer";

質問: 実行中に binaryType を変更できますか?

たとえば、同じ WS インスタンスを使用してテキスト メッセージとバイナリ メッセージの両方をインターリーブしたい場合、次のようにできますか?

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);

W3C WebSocket 仕様を読んでも、「binaryType を変更することはできません」と明示的に書かれているものは見当たりませんでしたが、私が見た WebSocket のすべての例/使用法は、binaryType を一度設定してから変更することはありません。変更できません。

どんな情報でもいただければ幸いです。

4

1 に答える 1

25

その場で binaryType を変更できますが、受信メッセージのデータ型にのみ影響します。バイナリ データを送信するには、BLOB または型付き配列を送信する必要があります。文字列を送信すると、常に文字列として送信 (および配信) されます。ワイヤ プロトコルでは、メッセージは、送信者が文字列としてエンコードされたデータを送信したことを意味する「テキスト」か、メッセージに生のエンコードされたバイト ストリームが含まれていることを意味する「バイナリ」のいずれかです。binaryType は、生データをアプリケーションに配信する方法を示します。

つまり、binaryType を設定すると、次にバイナリ メッセージを受信するためにメッセージ ハンドラが起動したときに、そのイベント データが binaryType 型になることを意味します。

于 2013-05-28T21:33:42.523 に答える