javascript - WebSocket 可以即时切换其 binaryType 吗?

标签 javascript binary websocket

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

ws = new WebSocket(url);

你可以设置它的二进制类型:

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/

相关文章:

javascript - 去抖动不在 $scope.$watch 内触发

javascript - 单击 anchor 链接时平滑滚动

c++ - 将二进制转换为负整数

java - AWS - 使用 @connections websocket 回调 url 从后端发送响应(单向) - API Gateway websocket 协议(protocol)

使用 Ratchet Websockets 进行 PHP 实时聊天

javascript - 如何更新本地存储阵列

javascript - 在等待 JavaScript 中的 promise 时到底发生了什么?

python 字符串每两个字符到字节 - 快速完成

c - c 上的二进制文件

java - Tomcat 数据库连接池未在 websocket 服务器端点中提供连接