如何判断 websocket onmessage 的参数类型?
Posted
技术标签:
【中文标题】如何判断 websocket onmessage 的参数类型?【英文标题】:How do I tell the type of websocket onmessage's parameter? 【发布时间】:2012-03-16 19:11:31 【问题描述】:这里https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent 声明属性数据是DOMString 类型|斑点 |数组缓冲区。我如何告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?
【问题讨论】:
【参考方案1】:服务器可以发送的适当的两种类型的帧是文本帧和二进制帧 (5.2)。 ws.binaryType
允许您定义要以哪种格式获取二进制数据。
binaryType
设置为arraybuffer
或blob
文本数据:字符串
要确定类型,可以使用:
e.data instanceof ArrayBuffer
e.data instanceof Blob
typeof e.data === "string"
Reference:
4。如果type表示数据为Text,则将event的
data
属性初始化为data。如果type表示数据是Binary,并且
binaryType
设置为“blob
”,那么将event的data
属性初始化为将 data 表示为其原始数据的新Blob
对象。如果type表示数据是Binary,并且
binaryType
设置为“arraybuffer
”,那么将event的data
属性初始化为一个新的只读ArrayBuffer
内容为data
的对象。
【讨论】:
【参考方案2】:“我如何告诉它我想要哪种类型?”
websocket 帧中的数据类型由发送方确定(参见1.2),因此无法由接收方设置。如果发送文本数据,则e.data
的类型为string
。如果发送二进制数据,则e.data
将是ArrayBuffer
或Blob
的实例,具体取决于接收方设置的ws.binaryType
属性的值。
“或者我怎么知道我得到的是哪种类型?”
pimvdb 已经回答了这个问题。
【讨论】:
以上是关于如何判断 websocket onmessage 的参数类型?的主要内容,如果未能解决你的问题,请参考以下文章
在 onMessage 注释中具有多个数据的 Websocket
不同的 WebSocket“onmessage”处理程序取决于屏幕