我正在开发一个使用Websocket进行通信的游戏项目。后端是一个Spring Boot应用程序。现在,示例消息如下所示:
{“ type”:“ EnemyHpChange”,“ id”:0,“ value”:-5}
如您所见,该消息可以很容易地缩短为二进制的2个字节,对于消息类型可以使用6位,对于id使用2位,等等。
减少延迟对我来说是有趣的,因为这是一个游戏,但是压缩这样的消息会使速度加快多少?
答案 0 :(得分:0)
有两点要考虑:
就理论而言,就避免感知到的延迟而言,避免JSON解析器可能不会影响网络延迟。
只有测试可以正确观察性能变化。理论虽然不错,但是引擎盖下进行了复杂的优化,它们产生了无法预料的效果。
该理论背后的原因是TCP / IP数据包的MTU。这两种消息可能都适合在一个数据包中,因此网络层的行为可能相同。
另一方面,如果您有很多邮件,则可能无法在同一数据包中容纳更多邮件,从而优化了网络流量(这仍然值得怀疑,因为这取决于邮件频率)。
我不确定,但是据我所知,野外的MTU值通常在500字节以下。
另一方面,一旦客户端获取数据,二进制数据通常比JSON更快,更容易解析。
这些是非常短的消息,但是,内存消耗和解析速度很可能会影响到客户端为止的感知延迟。
请注意,感知延迟不会改变网络延迟,但会改变客户端的响应能力以及事件转化为感知状态变化的速度。