如何判断消息参数上的 websocket 的类型

How do I tell the type of websocket onmessage's parameter?

本文关键字:参数 websocket 类型 消息 何判断 判断      更新时间:2023-09-26

这里 https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent 它声明属性数据的类型为 DOMString|斑点 |数组缓冲区。我如何告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?

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

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

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

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

参考:

4. 如果 type 指示数据是文本,则将事件的 data 属性初始化为数据

如果 type 指示数据是二进制的,并且binaryType设置为"blob",则将事件的 data 属性初始化为表示数据作为其原始数据的新Blob对象。

如果 type 指示数据是二进制的,并且binaryType设置为"arraybuffer",则将事件的 data 属性初始化为内容data的新只读ArrayBuffer对象。

"我怎么知道我想要哪种类型?">

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

"或者我怎么知道我得到的是哪种类型?">

pimvdb已经回答了这个问题。