【发布时间】:2012-08-27 01:58:31
【问题描述】:
关于如何在 node.js 和包含二进制数据的浏览器之间共享缓冲区存在问题。我对Socket.io 作为传输层很满意,但问题是浏览器没有Buffer class 的移植。反正我也找不到
我也遇到过binary.js,我想知道是否有一种将socket.io 作为传输层和Binary.js 作为数据介质的好方法来组合它们。我还看到了这个question,这有点像主题,但并没有真正解决问题。
我知道 socket.io 添加了二进制支持,但我没有找到任何关于该主题的文档。
更新:
binary.js 似乎不是解决方案。我想要的基本要求是与浏览器共享 Buffer 在节点中具有的相同功能。
我的需求包括两件事:
在服务器和浏览器中以相同的方式处理缓冲区。
支持二进制数据。
我可能会使用数组缓冲区。
编辑: 由于 node.js 在 V8 上运行,您可以使用 ArrayBuffer。好像问题已经解决了。然而,据我所知,节点人员认为创建缓冲区模块并在他们创建的 C 绑定中管理它是一个好主意(来自 Ryan Dahl 的演讲)。我认为这与如何通过网络进行缓冲有关。这意味着 ArrayBuffer 仍然不是服务器和浏览器之间共享的良好数据介质。
【问题讨论】:
-
我不明白到底是什么问题。您对浏览器中不存在的哪些功能感兴趣?
-
我的需求包括两件事: 1. 在服务器和浏览器中以相同的方式处理缓冲区。 2.支持二进制数据。
-
@BenjaminGruenbaum:问题不在于浏览器中没有可用的功能,而是浏览器中可用的功能(类型化数组)在
node.js中不可用。他不想把所有的代码都写两次。 -
嗨 @DavidSchwartz 感谢您提出这个问题。我添加了一些细节来澄清 Array Buffer 问题。
-
不,ArrayBuffer 只会在 IE10 中出现。缓冲来自 V8 的数据结构仍然存在性能问题。这就是为什么 node.js 在 V8 之外运行缓冲模块
标签: javascript node.js socket.io