Javascripttypes的数组“通过电线”

我创build一个8位无符号的JavaScript数组:

var myArray = Uint8Array(64); 

在客户端和服务器上操作这个数组,然后通过socket.io连接发送它。 我们正在写一个游戏,因此通过networking发送的数据越小越好。 因为socket.io不支持发送二进制数据是值得打扰与JavaScripttypes的数组,或者我们应该只使用正常的JavaScript数组? 他们还会小于原生js数组吗?

注意:我将假设客户端是指浏览器。 否则,请详细说明。

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

但是,本地websocket DO支持Blob和ArrayBuffers。

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

不好:

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

好:

  • Web套接字API非常简单。

  • 这将是更高的内存效率。 通常情况下,您的正常数组通过首先使它们成为一个JSONstring,然后将其发送回来。 这意味着你实际上正在发送你的数组的string表示forms! 相反,在这里你将发送你期望的字节量(以更可预测的方式,在发送之前不检查string长度,而是以更“协议”的方式 – 如果需要的话)。

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

否则你可以用JSON去。

说实话,如果你仍然使用JSON来支持socket.io和“通用”,那么也要启用闪存传输,如果游戏需要低延迟,则禁用较慢的传输。