一起发送JSON和Blob

时间:2018-07-04 14:23:28

标签: 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可以编写如下内容:

  this.socket.emit('broadcast', {
    stream: new Blob(stream, {'type': `video/webm${MEDIA_CHARSET}`}),
    from: {id: this.socket.id}
  });

流来自mediarecorder->可用数据事件监听器

但是使用本地websocket,我无法发送嵌入JSON对象中的blob,因为websocket只能发送字符串或arraybuffer。

为了将JSON和Blob一起发送,我尝试了许多不同的方法,但是没有任何效果。

有帮助吗?

是否可以仅在客户端使用Engine.IO以便将带有blob和JSON的消息打包在一起?有这种想法吗?

1 个答案:

答案 0 :(得分:0)

有许多方法可以序列化数据以通过二进制Web套接字发送。我建议考虑使用CBOR,它可以序列化为二进制,并且在其中支持二进制数据。

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