Javascript类型的数组"通过电线"

And*_*gan 5 javascript html5 node.js socket.io

我正在创建一个8位无符号的javascript数组:

 var myArray = Uint8Array(64);
Run Code Online (Sandbox Code Playgroud)

在客户端和服务器上操作此数组,然后通过socket.io连接发送它.我们正在编写一个游戏,因此通过网络发送的数据尽可能小.因为socket.io不支持发送二进制数据是否值得使用javascript类型数组,或者我们应该只使用普通的javascript数组?它们还会比原生的js阵列小吗?

Mam*_*aac 6

注意:我将假设客户端是指浏览器.另外,请详细说明.

Socket.io不支持二进制数据,主要是因为它提供了不同的传输,并且其中许多都不支持它.

但是,本机websockets DO支持Blob和ArrayBuffers.

如果你真的想要使用二进制数据来提高效率(我同意,这是你的方法),我认为你应该考虑使用websockets而不是socket.io.

坏事:

  • 只有约55%的用户使用支持websockets的浏览器浏览网页.
  • 你不会有商品socket.io提供,如渠道,发射和方法.

好处:

  • Web套接字API非常简单.

  • 它将更加节省内存.通常,通过首先将它们作为JSON字符串然后将它们发回来传输正常的数组.这意味着您实际上正在发送数组的字符串表示!相反,在这里,您将发送您期望的字节数(以更可预测的方式,在发送之前不检查字符串长度,但如果需要,以更多"协议"方式).

如果您决定使用WS,可以查看:http://www.adobe.com/devnet/html5/articles/real-time-data-exchange-in-html5-with-websockets.html

另外,你可以使用JSON.

说实话,如果你仍然使用JSON进行socket.io和"通用"支持,也可以启用闪存传输,如果游戏需要低延迟,则禁用较慢的传输.