Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Websocket-分割消息_Javascript_Sockets_Tcp_Websocket_Binary - Fatal编程技术网

Javascript Websocket-分割消息

Javascript Websocket-分割消息,javascript,sockets,tcp,websocket,binary,Javascript,Sockets,Tcp,Websocket,Binary,对于实时多人游戏,服务器使用Websocket向客户端发送二进制消息 消息的第一个字节(uint8)将是“数据包ID” 示例:数据包1至“更新实体”:x、y、分数、下一个字节中的名称 但是,为了优化带宽,我只想发送在两帧之间发生变化的值 示例(所有值已更改):数据包2至“更新实体位置”:x,y 数据包3“更新实体分数”:分数 数据包4至“更新实体名称”:名称 我的问题是:就大小而言,发送大量消息(数据包2、3、4)是否与发送未分割的1条消息(1个数据包)相同(不考虑额外的“数据包ID”字节,可以

对于实时多人游戏,服务器使用Websocket向客户端发送二进制消息

消息的第一个字节(uint8)将是“数据包ID

示例:数据包1至“更新实体”:x、y、分数、下一个字节中的名称

但是,为了优化带宽,我只想发送在两帧之间发生变化的值

示例(所有值已更改):数据包2至“更新实体位置”:x,y

数据包3“更新实体分数”:分数

数据包4至“更新实体名称”:名称


我的问题是:就大小而言,发送大量消息(数据包2、3、4)是否与发送未分割的1条消息(1个数据包)相同(不考虑额外的“数据包ID”字节,可以忽略不计)?每个Websocket消息是否有额外的成本?

来自服务器的每个Websocket消息(即带有屏蔽)的协议开销至少为8字节


如果消息作为单独的TCP数据包发送(例如,如果禁用NAGLE算法,这通常是HTTP/WSS的情况),那么您还可以获得每个TCP数据包的开销,即另一个40字节(IPv4)或60字节(IPv6)。如果使用了
wss://
,您还可以在顶部设置TLS记录的框架。

谢谢。使用wss,它看起来很重。然后我将发送一条独特的消息,如:packetID(uint8)、xyFlag(uint8)、x(uint16)(如果xyFlag=1)、y…、scoreFlag(uint8)、score(uint16)(如果scoreFlag=1),。。。其中,自上一帧以来未修改其stateProperty时,标志=0。如果stateProperty是uint8,则未设置标志。