我正在編寫基于 WebSocket 的客戶端服務器。我想發送原始二進制數據,然后由客戶端解碼。我的問題有兩個:雖然在 C++(我正在編寫服務器的語言)中對二進制數據進行操作很簡單,但在 Javascript 中似乎很難。我發現您可以使用ArrayBuffers 和UInt8Arrays 來執行大部分操作,這對于發送消息非常有效。我的問題是,當我嘗試接收消息時,如果我在服務器端將消息聲明為二進制,它會Blob在客戶端顯示為 a 。我曾嘗試將 Blob 轉換為ArrayBuffer這樣的:ws.onmessage = function(evt) { var data = null; data = await new Response(evt.data).arrayBuffer();}但這給了我錯誤:SyntaxError: await is only valid in async functions and async generators看起來這個方法是異步的,雖然我確信我可以這樣做,但一開始它看起來并不是那么好。我已經意識到以文本形式發送數據會使數據evt.data顯示為字符串,這讓我相信我可以對數據包使用 JSON 格式而不是二進制格式。不過我真的不想使用 JSON,因為有些數據包會充滿大量信息,我擔心它會增加不必要的膨脹。我認為我真正想要的只是能夠將 讀取evt.data為ArrayBuffer,因為這似乎是性能最高的。
在 Javascript websocket 消息中讀取 Blob 的內容
慕妹3146593
2021-06-15 17:23:41