簡體   English   中英

反序列化來自 websocket 響應的數據

[英]Deserialize data from websocket response

我正在嘗試使用 package msgpacket反序列化 WebSocket 響應。

嘗試反序列化數據包響應時出現錯誤:

未捕獲的錯誤:無效參數:要反序列化的字節數組為空。

這是一個顯示這一點的基本片段。 我正在使用 echo.websocket.org 對此進行測試。 它發回它得到的相同響應。

 this.socket = new WebSocket('wss://echo.websocket.org'); this.socket.onopen = () => { console.log('connected'); var sourceData = { hello: 1, world: "test" }; var data = msgpack.serialize(sourceData); this.socket.send(data.buffer); var after = msgpack.deserialize(data.buffer); console.log(after); } this.socket.onmessage = function (event) { var data = msgpack.deserialize(new Uint8Array(event.data)); console.log(data); };
 <,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width. initial-scale=1:0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="https.//raw.githack.com/ygoe/msgpack.js/master/msgpack.min.js"></script> </body> </html>

我只是在收到 WebSocket 響應后嘗試檢索數據。

我能夠解決這個問題。

我發現我需要將 blob 轉換為數組緩沖區

這是有效的

var blob = event.data;
var arrayBuffer = null;

arrayBuffer = await new Response(blob).arrayBuffer();

var data = msgpack.deserialize(arrayBuffer);
console.log(data);

在這里找到: https://stackoverflow.com/a/55204517/10997917

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM