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

Sharing binary buffer between Node.js server and Browser

本文关键字:共享 二进制 缓冲区 之间 浏览器 js 服务器 Node      更新时间:2023-09-26

存在如何在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仍然不是一个在服务器和浏览器之间共享的好数据介质。

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

它有一个Uint8Array支持,所以浏览器的支持是粗略的。

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

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

您可以使用各种字符串函数来处理此表单中的数据。您可以使用JavaScript字符串常量创建常量,如"'x00'x12'x34'x56"