18

存在如何在 node.js 和包含二进制数据的浏览器之间共享缓冲区的问题。我对Socket.io作为传输层非常满意,但问题是没有为浏览器移植Buffer 类。无论如何我都找不到

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

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

更新:

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

我的需求包括两件事:

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

  2. 支持二进制数据。

我可能会使用数组缓冲区。

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

4

2 回答 2

8

浏览器缓冲区在浏览器中模拟 Node 的BufferAPI。

它由支持Uint8Array,因此浏览器支持是粗略的。

于 2012-09-18T22:33:52.417 回答
2

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

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

您可以使用各种字符串函数来操作此表单中的数据。您可以像这样使用 JavaScript 字符串常量创建常量"\x00\x12\x34\x56"

于 2012-09-19T04:15:50.500 回答