【问题标题】:How to send binary data from a Node.js socket.io server to a browser client?如何将二进制数据从 Node.js socket.io 服务器发送到浏览器客户端?
【发布时间】:2014-07-27 02:49:29
【问题描述】:

我一直在查看整个 Socket.IO 文档,但是,即使他们承诺它在那里,我也找不到一个简单、最小的示例来说明如何在服务器/客户端之间发送二进制数据。

它是怎么做的?

【问题讨论】:

  • Here 是一个示例,说明如何从服务器将图像作为缓冲区发送并在客户端的 HTML5 Canvas 上呈现。
  • @Viclib 你搞定了吗?请分享..!!!
  • 啊,我有,我现在忘记了,抱歉没有更新。但据我记得,您所要做的就是从 Float32Array(或类似的)获取缓冲区(类似:myData = new Float32Array([1,2,3,4]).buffer; 并通过socket.io 发送,即socket.emit("foo",myData)。它会自动处理它作为二进制数据。然后,在另一端,您必须将其转换回:socket.on("foo",function(data){ data = new Float32Array(data); })。不过,我是凭记忆写的,但我记得博客文章中有一个关于发布socket.io 的示例1.0.

标签: javascript node.js websocket socket.io socket.io-1.0


【解决方案1】:

它实际上在文档中。 Socket.io 的当前文档在Socket.emit 下说:

[...] 向由字符串名称标识的套接字发出事件。任何其他 可以包含参数。支持所有数据结构,包括 Buffer [...]

所以,如果你可以发送一个缓冲区,你就可以发送二进制数据。您所要做的就是将您的数据打包到一个Buffer 对象中。

您可能想阅读Socket.io Binary SupportSending and Receiving Binary

【讨论】:

  • 啊,那是我想念的。我搜索错了。那是自动的吗?如果我发送一个 Float32Array 它将只是作为二进制文件,而不是被序列化为 JSON?
【解决方案2】:

从 socket.io 1.0 开始可以发送二进制数据。 http://socket.io/blog/introducing-socket-io-1-0/

如何发送和接收二进制数据在官方文档中并不清楚。唯一的文档是:

var socket = new WebSocket('ws://localhost');
socket.binaryType = 'arraybuffer';
socket.send(new ArrayBuffer);

我建议你看看这个答案,在那里你可以找到服务器和客户端代码实现的基本示例(javascript 和 java 也是):

How to send binary data with socket.io?

好处是它也可以在 Android 上运行! (如果你愿意)

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2010-09-30
    • 2021-01-26
    • 2020-08-16
    • 2015-03-25
    • 2023-03-08
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多