Pet*_*ing 2 javascript websocket
如何将通过 WebSocket 二进制消息接收到的 blob 转换为 Float32Array(或其他类型化数组:Uint32、Uint16 等)。
我尝试使用 FileReader,但“结果”需要很长时间才能可用。结果必须在下一个接收到的 WebSocket 消息中可用。
如果我可以让 WebSocket 接收 ArrayBuffer 而不是 Blob,那就行了。我怎样才能做到这一点?
找到了解决方案,很简单。WebSocket binaryType 默认为 'Blob',将其更改为 ArrayBuffer,然后将数据转换为其他 TypedArrays 会很快。
var ws = new WebSocket(...);
ws.binaryType = 'arraybuffer';
ws.onmessage = wsevent;
Run Code Online (Sandbox Code Playgroud)
消息处理程序可能如下所示:
var floatArray;
function wsevent(event) {
if (event.data instanceof ArrayBuffer) {
floatArray = new Float32Array(event.data);
return;
}
//...handle other ws messages
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我通常在一条消息中发送二进制数据,然后下一条文本消息将使用二进制数据。
| 归档时间: |
|
| 查看次数: |
1806 次 |
| 最近记录: |