为了账号安全,请及时绑定邮箱和手机立即绑定

在 Javascript websocket 消息中读取 Blob 的内容

在 Javascript websocket 消息中读取 Blob 的内容

慕妹3146593 2021-06-15 17:23:41
我正在编写基于 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,因为这似乎是性能最高的。
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

使用 promise 的 then 方法


new Response(evt.data).arrayBuffer().then(buffer=> {

//here you have the buffer

})

注意:await 可以在用 async 关键字声明的函数内使用。


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 1065 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信