这里 https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent 它声明属性数据的类型为 DOMString|斑点 |数组缓冲区。我如何告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?
服务器可以发送的两种类型的框架是文本框架和二进制框架 (5.2(。ws.binaryType
允许您定义要获取二进制数据的格式。
- 二进制数据:取决于
binaryType
设置为arraybuffer
或blob
- 文本数据:字符串
要确定类型,您可以使用:
-
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
将是ArrayBuffer
或Blob
的实例,这取决于接收方设置的ws.binaryType
属性的值。
"或者我怎么知道我得到的是哪种类型?">
pimvdb已经回答了这个问题。