Node.js 一起发送JSON和blob

Node.js 一起发送JSON和blob,node.js,websocket,socket.io,web-mediarecorder,engine.io,Node.js,Websocket,Socket.io,Web Mediarecorder,Engine.io,我正在写一个简单的流媒体服务 A浏览器A打开服务器的web套接字,然后另一个浏览器B打开同一服务器的新套接字 浏览器A通过其摄像头(MediaRecorder API)注册视频并将其发送到服务器 服务器将此视频广播到其他连接的浏览器 我有一个使用Socket.IO的工作版本,但我想用普通JavaScript(Node.js服务器上的WebSocket.Server和客户端上的WebSocket)来实现 这就是问题所在: 使用socket.io,a可以编写如下内容: this.socket.e

我正在写一个简单的流媒体服务

A浏览器A打开服务器的web套接字,然后另一个浏览器B打开同一服务器的新套接字

浏览器A通过其摄像头(MediaRecorder API)注册视频并将其发送到服务器

服务器将此视频广播到其他连接的浏览器

我有一个使用Socket.IO的工作版本,但我想用普通JavaScript(Node.js服务器上的WebSocket.Server和客户端上的WebSocket)来实现

这就是问题所在:

使用socket.io,a可以编写如下内容:

  this.socket.emit('broadcast', {
    stream: new Blob(stream, {'type': `video/webm${MEDIA_CHARSET}`}),
    from: {id: this.socket.id}
  });
流来自mediarecorder->dataavailable事件侦听器

但对于原生websocket,我无法发送嵌入JSON对象的blob,因为websocket只能发送string或arraybuffer

为了将JSON和blob一起发送,我尝试了许多不同的方法,但都不起作用

有什么帮助吗


是否可以在客户端仅使用Engine.IO来将包含blob和JSON的消息打包在一起?有没有关于这种方法的想法?

有很多方法可以序列化数据,以便通过二进制web套接字发送。我建议考虑CBOR,它可以序列化为二进制,并且支持二进制数据


NPM上有几个CBOR库可供选择。

我已签出,但似乎仍然无法发送blob或arraybuffer。这个库似乎没有管理ArrayBuffer数据类型,它发送了一个空对象。这也是一个尚未解决的问题。@wiulma似乎您只需要使用Uint8Array来代替。。。无论如何,CBOR还有其他几个包。