在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,然后再也没有对其进行更改,这表明它确实不能改变。
任何信息,将不胜感激。
最佳答案
您可以随时更改binaryType,但是它只会影响接收到的消息的数据类型。要发送二进制数据,您必须发送Blob或类型化数组。如果您发送字符串,它将始终作为字符串发送(和传送)。在有线协议(protocol)中,消息可以是“文本”,即发件人发送的数据编码为字符串,也可以是“二进制”,这意味着消息包含原始的编码字节流。 binaryType指示应如何将原始数据传递到应用程序。
换句话说,当您设置binaryType时,这意味着消息处理程序在下次触发以接收二进制消息时,该事件数据将为binaryType类型。
关于javascript - WebSocket可以即时切换其binaryType吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16800979/