[英]Typed Arrays in Gecko 2: Float32Array concatenation and expansion
[英]JavaScript Convert Blob to Float32Array (or other Typed Arrays)
如何將通過 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;
消息處理程序可能如下所示:
var floatArray;
function wsevent(event) {
if (event.data instanceof ArrayBuffer) {
floatArray = new Float32Array(event.data);
return;
}
//...handle other ws messages
}
在我的代碼中,我通常在一條消息中發送二進制數據,然后下一條文本消息將使用二進制數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.