读取Javascript websocket消息中Blob的内容
我正在编写基于WebSocket的客户端和服务器 我想发送原始二进制数据,然后由客户端解码 我的问题有两方面:读取Javascript websocket消息中Blob的内容,javascript,websocket,Javascript,Websocket,我正在编写基于WebSocket的客户端和服务器 我想发送原始二进制数据,然后由客户端解码 我的问题有两方面: L> > Pc>在C++中对二进制数据进行操作(我正在编写服务器的语言)是直接的,JavaScript中似乎很难。p> 我发现,您可以使用ArrayBuffers和UInt8Arrays来执行大多数操作,这对于发送消息非常有效 我的问题是,如果我在服务器端将消息声明为二进制,那么当我尝试接收消息时,它在客户端显示为Blob。我已尝试将Blob转换为ArrayBuffer,如下所示:
-
<> L> > Pc>在C++中对二进制数据进行操作(我正在编写服务器的语言)是直接的,JavaScript中似乎很难。p>
- 我发现,您可以使用
s和ArrayBuffer
s来执行大多数操作,这对于发送消息非常有效UInt8Array
- 我的问题是,如果我在服务器端将消息声明为二进制,那么当我尝试接收消息时,它在客户端显示为
。我已尝试将Blob转换为Blob
,如下所示:ArrayBuffer
SyntaxError:await仅在异步函数和异步生成器中有效
这个方法似乎是异步的,虽然我确信我可以这样做,但一开始它看起来并不是很好
我已经意识到以文本形式发送数据会使evt.data
显示为字符串,这让我相信我可以使用JSON格式来代替二进制格式
不过我真的不想使用JSON,因为有些数据包将充满大量信息,我担心它会增加不必要的膨胀
我想我真正想要的是能够将
evt.data
作为ArrayBuffer
读取,因为这似乎是最有效的方法。使用承诺的then方法
new Response(evt.data).arrayBuffer().then(buffer=> {
//here you have the buffer
})
注意:await可以在用async关键字声明的函数中使用
new Response(evt.data).arrayBuffer().then(buffer=> {
//here you have the buffer
})