首页 文章

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

提问于
浏览 458
19

如何在node.js和包含二进制数据的浏览器之间共享缓冲区存在问题 . 我很高兴Socket.io作为传输层,但问题是没有为浏览器移植Buffer class . 不管怎样我都找不到

我也遇到了binary.js,我想知道是否有一种很好的方法可以将socket.io作为传输层并将Binary.js作为数据媒体进行组合 . 我也看到了这个question,这是一个主题,但并没有真正解决问题 .

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

Update:

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

我的需求包括两件事:

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

  • 支持二进制数据 .

我可能会使用Array Buffer .

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

2 回答

  • 8

    browser-buffer在浏览器中模拟Node的 Buffer API .

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

  • 2

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

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

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

相关问题