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

Javascript 低延迟websocket html 5游戏的数据包大小,javascript,html,node.js,websocket,socket.io,Javascript,Html,Node.js,Websocket,Socket.io,我正在做一个HTML5国际象棋游戏。我用长度(大小)为64的无符号8位二进制数组表示电路板。因为国际象棋棋盘上有64个位置 var board = Uint8Array(64); 每个棋子在棋盘上通过(显然)8位无符号整数表示。然后,在客户机上有一个映射,将一个片段的二进制表示与文本字符串相关联,例如: var pieceMap = { 01: 'BlackKnight', 112: 'WhitePawn', 6: 'BlackRook' ... } 数据通过socket.io连接发送(假设

我正在做一个HTML5国际象棋游戏。我用长度(大小)为64的无符号8位二进制数组表示电路板。因为国际象棋棋盘上有64个位置

var board = Uint8Array(64);
每个棋子在棋盘上通过(显然)8位无符号整数表示。然后,在客户机上有一个映射,将一个片段的二进制表示与文本字符串相关联,例如:

var pieceMap = { 01: 'BlackKnight', 112: 'WhitePawn', 6: 'BlackRook' ... }
数据通过socket.io连接发送(假设我们使用的是WebSocket),我想是TCP?因此,问题是: TCP会将我的数据包发送到与我提供给它的数据一样小的位置(有TCP开销),还是TCP有最小的数据包大小并将我的200字节数据包作为1024字节的数据包发送?


为什么如此痴迷于尺寸?我知道这没关系,但我用它作为学习体验,在未来的游戏中我会用它来降低延迟。。。我知道国际象棋不需要低延迟

根据RFC的指示,框装数据包:

每个消息的开销高达10字节,每个消息片段的开销小于10字节。每个片段发送多少字节由有效负载长度(帧的一部分)决定。不过,碎片可能相当大。除非你发送的信息非常大,否则我认为这不会是一个问题

根据成帧和分段的工作方式,如果成帧+数据仅为100字节左右,则不应发送/接收1024字节的数据

我的猜测是,有些实现可能会有一些细微的差异,但除非您开始看到应用程序中的压力问题,否则您不应该过多地关注这样的细节

“过早优化是万恶之源”Donald Knuth
另一个细节:如果你真的想要非常低的延迟,你必须开始研究使用UDP或多播之类的东西。问题是:WebSocket不支持这些。减少数据包大小并不是联网唯一重要的事情,只是其中的一部分。。。根据我使用socket.io的经验,CPU在带宽之前就成了小消息的瓶颈,而当消息处于低千位时,RAM在带宽之前也可能会受到很大的冲击。当然,这完全取决于您的应用程序,我只是在谈论经验。

这可能会有所帮助,这在某种程度上可以满足我的需求。虽然不是一路走来。Im假设这意味着(不考虑其他层),一个100字节+20字节的tcp数据包将以总共120字节的速度发送?而且没有额外的填充物来组成一个最小的tcp包大小??真棒的答案。感谢socket.io提供的系统资源,我将密切关注这一点。socket.io的所有工作都是使用四核处理器上的4个实例完成的(有时是AMD A6,在更好的情况下是core i7或xeon),具有768mb-4096mb的RAM和100mbps的连接。我不知道你会运行什么硬件,也不知道你的应用程序会有什么处理流程。