gpt4 book ai didi

javascript - 读取 Javascript websocket 消息中 Blob 的内容

转载 作者:行者123 更新时间:2023-12-02 23:30:55 26 4
gpt4 key购买 nike

我正在编写基于 WebSocket 的客户端服务器。

我想发送原始二进制数据,然后由客户端解码。

我的问题有两个:

  • 虽然用 C++(我编写服务器的语言)对二进制数据进行操作很简单,但在 Javascript 中似乎很难。

  • 我发现您可以使用 ArrayBuffer 和 UInt8Array 来完成大部分操作,并且这对于发送消息来说效果很好。

  • 我的问题是,当我尝试接收消息时,如果我在服务器端将消息声明为二进制消息,它会在客户端上显示为 Blob 。我尝试将 Blob 转换为 ArrayBuffer,如下所示:

ws.onmessage = function(evt) {
var data = null;
data = await new Response(evt.data).arrayBuffer();
}

但这给了我错误:

语法错误:await仅在异步函数和异步生成器中有效

这个方法似乎是异步的,虽然我确信我可以这样做,但它一开始看起来并不是那么好。

我已经意识到,以文本形式发送数据会使 evt.data 显示为字符串,这让我相信我可以对数据包使用 JSON 格式而不是二进制格式。

不过我真的不想使用 JSON,因为有些数据包会充满大量信息,我担心它会增加不必要的膨胀。

我认为我真正想要的只是能够将 evt.data 作为 ArrayBuffer 读取,因为这似乎是性能最高的。

最佳答案

使用promise的then方法

new Response(evt.data).arrayBuffer().then(buffer=> {
//here you have the buffer
})

then arrayBuffer

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

关于javascript - 读取 Javascript websocket 消息中 Blob 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com