如何告知websocket onmessage参数的类型?

时间:2012-02-27 09:44:41

标签: javascript websocket blob arraybuffer

此处https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent表示属性数据的类型为DOMString | Blob | ArrayBuffer。我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?

2 个答案:

答案 0 :(得分:37)

服务器可以发送的适当的两种类型的框架是文本框架和二进制框架(5.2)。 ws.binaryType允许您定义要获取二进制数据的格式。

  • 二进制数据:取决于binaryType设置为arraybufferblob
  • 文字数据:字符串

要确定类型,您可以使用:

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

Reference

  

4。如果 type 表示数据为Text,则将 event data属性初始化为 data

     

如果类型表示数据是二进制,binaryType设置为“blob”,则初始化 event 's {{ 1}}属性为新的data对象,表示 data 作为其原始数据。

     

如果type表示数据为二进制,Blob设置为“binaryType”,则将 event arraybuffer属性初始化为新的内容为data的只读ArrayBuffer对象。

答案 1 :(得分:0)

  

“如何告诉我想要哪种类型?”

websocket帧中的数据类型由发送方确定(请参见1.2),因此接收方无法设置。如果发送了文本数据,则e.data的类型为string。如果发送了二进制数据,则e.data将是ArrayBufferBlob的实例,具体取决于接收者设置的ws.binaryType属性的值。

  

“或者我怎么知道我得到哪种类型?”

pimvdb已经回答了这个问题。