如何在node.js和包含二进制数据的浏览器之间共享缓冲区存在问题。我很高兴Socket.io作为传输层,但问题是浏览器没有移植Buffer class。不是我能找到的东西
我也遇到了binary.js,我想知道是否有一种很好的方法可以将socket.io作为传输层并将Binary.js作为数据媒体进行组合。我也看到了这个question,这是一个主题,但并没有真正解决问题。
我知道socket.io添加了二进制支持,但我没有找到关于该主题的任何文档。
更新
似乎binary.js不是解决方案。我想要的基本要求是与浏览器共享Buffer在节点中具有的相同功能。
我的需求包括两件事:
在服务器和浏览器中以相同的方式处理缓冲区。
支持二进制数据。
我可能会使用Array Buffer。
编辑: 由于node.js在V8上运行,因此您可以使用ArrayBuffer。似乎问题已经解决了。然而,据我所知,节点人员认为创建一个缓冲模块并在他们创建的C绑定中管理它是一个好主意(来自Ryan Dahl的讲话)。我认为这与如何通过网络进行缓冲有关。这意味着ArrayBuffer仍然不是在服务器和浏览器之间共享的良好数据媒体。
答案 0 :(得分:8)
browser-buffer在浏览器中模拟Node的Buffer
API。
它由Uint8Array
支持,因此browser support是粗略的。
答案 1 :(得分:2)
JavaScript内置的字符串在内部使用宽字符。因此,他们可以轻松地在每个角色位置存储0到255之间的值。这是一种JavaScript语言功能,因此它应该在浏览器或node.js
中使用相同的功能。
您可以使用charCodeAt
提取字符串中特定位置的值,并使用fromCharCode
创建一个字符(可以添加到字符串中),其值为0到255. / p>
您可以使用各种字符串函数来处理此表单中的数据。您可以使用JavaScript字符串常量创建常量,例如"\x00\x12\x34\x56"
。