2012-09-01 83 views
19

存在一个如何在node.js和包含二进制数据的浏览器之间共享缓冲区的问题。我很满意Socket.io作为传输层,但问题在于浏览器没有移植Buffer class。不是我能找到的任何东西在Node.js服务器和浏览器之间共享二进制缓冲区

我也碰到过binary.js,我想知道是否有一种很好的方法将socket.io作为传输层并将Binary.js作为数据介质。我也看到这个question,这是主题,但并没有真正解决这个问题。

我知道socket.io增加了二进制支持,但是我还没有找到关于该主题的任何文档。

更新:

似乎binary.js不会解决方案。我想要的基本要求是与缓冲区在浏览器中共享相同的功能。

我需要包括两个方面:

  1. 处理缓冲区在服务器和浏览器相同的方式。

  2. 支持二进制数据。

我可能会使用阵列缓冲区。

编辑: 由于node.js运行在V8上,因此可以使用ArrayBuffer。似乎问题解决了。然而,据我所知,节点人员决定创建一个缓冲模块并在他们创建的C绑定中进行管理(从Ryan Dahl发表的演讲中)是一个好主意。我认为这与缓冲如何通过网络完成有关。这意味着ArrayBuffer仍然不是服务器和浏览器之间共享的好数据介质。

+1

我不明白究竟是什么问题。你对浏览器中不存在哪些功能感兴趣? –

+0

我的需求包含两件事: 1.在服务器和浏览器中以相同的方式处理缓冲区。 2.支持二进制数据。 – qballer

+0

使用DataView和ArrayBuffer – Chiguireitor

回答

8

browser-buffer在浏览器中模拟节点的Buffer API。

它支持Uint8Array,所以browser support是粗略的。

+0

这是我正在寻找的答案,事情是,它仍然非常不稳定。 – qballer

+0

是的,这个项目的活动非常少。它看起来像是某人的实验性代码。我会用它作为一个很好的起点 - 你将不得不分叉并改进代码。 – josh3736

2

JavaScript内建的字符串在内部使用宽字符。因此,他们可以轻松地在每个字符位置存储0到255的值。这是一种JavaScript语言功能,因此它应该在浏览器或node.js中工作。

您可以使用charCodeAt提取字符串中的特定位置的价值和fromCharCode创建一个角色(可以添加到字符串)从值0到255

可以使用各种字符串函数来处理这种形式的数据。您可以使用JavaScript的字符串常量创建常量,如"\x00\x12\x34\x56"

相关问题