当前位置:  开发笔记 > 编程语言 > 正文

WebSocket可以动态切换其binaryType吗?

如何解决《WebSocket可以动态切换其binaryType吗?》经验,为你挑选了1个好方法。

在JavaScript中,当您实例化WebSocket时:

ws = new WebSocket(url);

你可以设置它的binaryType:

ws.binaryType = "blob";
// or
ws.binaryType = "arraybuffer";

问题:我可以动态更改binaryType吗?

例如,如果我想使用相同的WS实例来交错文本和二进制消息,我可以执行以下操作吗?

ws = new WebSocket(url);
// Send text
ws.binaryType = "blob";
ws.send("this is text");
// Now send binary data
ws.binaryType = "arraybuffer";
var ab = new ArrayBuffer(...); 
ws.send(ab);

在阅读W3C WebSocket规范时,我没有看到任何明确说明"你不能改变binaryType"的内容,但我见过的每一个WebSocket示例/用法都设置了一次binaryType然后再也没有改变它,这有点暗示它无法改变.

任何信息,将不胜感激.



1> kanaka..:

您可以动态更改binaryType,但它只会影响接收消息的数据类型.要发送二进制数据,您必须发送blob或类型化数组.如果您发送一个字符串,它将始终作为字符串发送(和传递).在有线协议中,消息可以是"文本",意味着发送方发送的数据被编码为字符串,或者它可以是"二进制",这意味着消息包含原始编码的字节流.binaryType指示应如何将原始数据传递到应用程序.

换句话说,当您设置binaryType时,意味着下次消息处理程序触发接收二进制消息时,该事件数据将为binaryType类型.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有