Javascript类型的数组“通过电线”

时间:2012-10-04 00:52:30

标签: javascript html5 node.js socket.io

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

 var myArray = Uint8Array(64);

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

1 个答案:

答案 0 :(得分: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和“通用”支持,也可以启用flash传输,如果游戏需要低延迟,则禁用较慢的传输。