web-dev-qa-db-ja.com

WebSocket onmessageのパラメーターのタイプを確認するにはどうすればよいですか?

ここで https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent 属性データがDOMString型であると述べています|ブロブ| ArrayBuffer。どのタイプが欲しいかをどうやって見分けるのですか?または、どのタイプを取得したかをどのように知ることができますか?

19
marc40000

サーバーが送信できる適切な2種類のフレームは、テキストフレームとバイナリフレームです( 5.2 )。 ws.binaryType は、バイナリデータを取得する形式を定義できます。

  • バイナリデータ:binaryTypearraybufferまたはblobのいずれかに設定されているかどうかによって異なります
  • テキストデータ:文字列

タイプを判別するには、以下を使用できます。

  • e.data instanceof ArrayBuffer
  • e.data instanceof Blob
  • typeof e.data === "string"

参照

4。typeがデータがテキストであることを示している場合は、eventdata属性をに初期化します。データ

typeがデータがバイナリであることを示し、binaryTypeが "blob"に設定されている場合、eventdata属性をdataを生データとして表す新しいBlobオブジェクト。

Typeがデータがバイナリであることを示し、binaryTypeが "arraybuffer"に設定されている場合、eventdata属性を、内容がArrayBufferである新しい読み取り専用のdataオブジェクトに初期化します。

38
pimvdb

「どのタイプが欲しいかをどうやって見分けるのですか?」

WebSocketフレーム内のデータのタイプは、送信者によって決定されるため( 1.2 を参照)、受信者が設定することはできません。テキストデータが送信される場合、e.dataのタイプはstringです。バイナリデータが送信される場合、e.dataは、受信者によって設定されたws.binaryTypeプロパティの値に応じて、ArrayBufferまたはBlobのいずれかのインスタンスになります。

「または、どのタイプを取得したかをどうやって知ることができますか?」

これはすでにpimvdbによって回答されています。

0
rotosizero