如何确定websocket onmessage参数的类型?

30
2个回答

52

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

  • 二进制数据:取决于 binaryType 被设置为 arraybufferblob 中哪一个
  • 文本数据:字符串

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

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

参考资料:

4. 如果 type 表示数据是文本,则将 eventdata 属性初始化为 data

如果 type 表示数据是二进制的,并且 binaryType 设置为“blob”,则将 eventdata 属性初始化为一个新的 Blob 对象,该对象将 data 作为其原始数据。

如果 type 表示数据是二进制的,并且 binaryType 设置为“arraybuffer”,则将 eventdata 属性初始化为一个新的只读 ArrayBuffer 对象,其内容为 data


2
“我该如何告诉它我想要哪种类型?”发送者决定了websocket帧中数据的类型(参见1.2),因此接收者无法设置。如果发送文本数据,则e.data的类型为string。如果发送二进制数据,则e.data将是ArrayBufferBlob的实例,具体取决于接收者设置的ws.binaryType属性的值。

“或者我怎样知道我得到了哪种类型?”这个问题已经被pimvdb回答过了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接