此处https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent表示属性数据的类型为DOMString | Blob | ArrayBuffer。我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?
答案 0 :(得分:37)
服务器可以发送的适当的两种类型的框架是文本框架和二进制框架(5.2)。 ws.binaryType
允许您定义要获取二进制数据的格式。
binaryType
设置为arraybuffer
或blob
要确定类型,您可以使用:
e.data instanceof ArrayBuffer
e.data instanceof Blob
typeof e.data === "string"
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
将是ArrayBuffer
或Blob
的实例,具体取决于接收者设置的ws.binaryType
属性的值。>
“或者我怎么知道我得到哪种类型?”
pimvdb已经回答了这个问题。