如果是二进制传输呢?binaryType设置为arraybuffer
时间: 2024-05-07 16:23:33 浏览: 148
to-array-buffer:将任何类似二进制的数据转换为 ArrayBuffer
如果使用二进制传输,可以将WebSocket对象的`binaryType`属性设置为`arraybuffer`,表示接收到的数据是二进制数组,而不是字符串。这样,在`onmessage`事件处理程序中,`event.data`属性将包含一个`ArrayBuffer`对象,可以使用`DataView`对象来解析其中的数据。
例如,假设服务器发送了一个包含两个32位整数的二进制数据包。在客户端接收到数据时,可以使用以下代码将其解析:
```javascript
websocket.binaryType = 'arraybuffer';
websocket.onmessage = function(event) {
var dataView = new DataView(event.data);
var int1 = dataView.getInt32(0, true); // 读取第一个整数(偏移量为0)
var int2 = dataView.getInt32(4, true); // 读取第二个整数(偏移量为4)
console.log('Received data: ', int1, int2);
};
```
在上面的代码中,`getInt32()`方法用于从`ArrayBuffer`对象中读取一个32位整数。它的第一个参数是偏移量,表示从哪个字节开始读取;第二个参数表示是否按照小端字节序(true)或大端字节序(false)来解析数据。
阅读全文