数据包大小为低延迟websocket html 5游戏

我正在做一个HTML 5的国际象棋游戏。 我用一个长度(大小)为64的无符号8位二进制数组来代表该板。由于棋盘上有64个位置。

var board = Uint8Array(64); 

每个棋子通过(明显)8位无符号整数表示在棋盘上。 然后在客户端上有一张地图将一个片断的二进制表示与一个文本string相关联,例如:

 var pieceMap = { 01: 'BlackKnight', 112: 'WhitePawn', 6: 'BlackRook' ... } 

数据通过socket.io连接发送(让我们假设我们正在使用websockets),TCP我认为? 所以问题是: 请问TCP发送的数据包与我给它的数据一样小(有TCP开销),还是TCP有一个最小数据包大小,并发送200byte数据包作为一个1024byte数据包?

为什么这么痴迷大小? 我知道这并不重要,但我使用这个为学习experiance,在未来的比赛中,我会用这个来降低延迟…我知道国际象棋并不需要低延迟。

根据RFC的指示,将数据包作为框架:

http://tools.ietf.org/html/rfc6455#section-5

每个消息的开销最多为10个字节或更less的PER消息片段。 每个分段发送多less字节由有效载荷长度决定(部分成帧)。 尽pipe如此,碎片可能相当大。 除非你发送非常大的消息,我不认为这会是一个问题。

根据成帧和分片工作的方式,如果成帧+数据刚好在100字节左右,则不应该发送/接收1024字节的数据。

我的猜测是,有些实现可能会做些微小的改变,但是除非您的应用程序开始出现压力问题,否则您不应该担心这样的细节。

“不成熟的优化是万恶之源”Donald Knuth

另一个细节:如果你真的想要非常低的延迟,你将不得不开始考虑使用UDP或多播的东西。 问题是:websockets不支持这些。 减小数据包的大小并不是networking的重要组成部分,而只是其中的一部分…从我使用socket.io的经验来看,CPU在带宽之前成为带有小信息的瓶颈,RAM也可能会受到重创在带宽以及消息处于低千字节之前。 当然,这完全取决于你的应用,而我只是在谈论实证经验。