在Node.js服务器和浏览器之间共享二进制缓冲区

有一个如何在node.js和包含二进制数据的浏览器之间共享缓冲区的问题。 我对使用Socket.io作为传输层感到非常满意,但问题是没有为浏览器移植Buffer类 。 不是我能find的东西

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

我知道socket.io添加二进制支持,但我还没有find任何有关该主题的文档。

更新:

看来binary.js不会是解决scheme。 我想要的基本要求是与浏览器共享Buffer在节点中具有的相同function。

我的需求包括两件事情:

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

  2. 支持二进制数据。

我可能会使用arrays缓冲区。

编辑:由于node.js运行在V8,你可以使用ArrayBuffer。 似乎问题解决了。 然而,据我所知,节点的人们决定创build一个缓冲模块并且在他们创build的C绑定(从Ryan Dahl给出的讨论)中pipe理它是一个好主意。 我认为这与缓冲如何在networking上完成有关。 这意味着ArrayBuffer仍然不是服务器和浏览器之间共享的好数据介质。

浏览器缓冲区在浏览器中模拟节点的Buffer API。

它由Uint8Array 支持 ,所以浏览器支持是粗略的。

JavaScript内置的string在内部使用宽字符。 所以他们可以很容易地在每个字符位置存储从0到255的值。 这是一种JavaScript语言function,因此它应该在浏览器或node.js

您可以使用charCodeAt来提取string中特定位置的值,并使用fromCharCode创build一个字符(可以添加到string中),其值为0到255。

您可以使用各种string函数来处理这种forms的数据。 您可以使用JavaScriptstring常量创build常量,如"\x00\x12\x34\x56"