是否有必要压缩Websocket短消息?

时间:2018-08-27 17:23:13

标签: websocket latency

我正在开发一个使用Websocket进行通信的游戏项目。后端是一个Spring Boot应用程序。现在,示例消息如下所示:

{“ type”:“ EnemyHpChange”,“ id”:0,“ value”:-5}

如您所见,该消息可以很容易地缩短为二进制的2个字节,对于消息类型可以使用6位,对于id使用2位,等等。

减少延迟对我来说是有趣的,因为这是一个游戏,但是压缩这样的消息会使速度加快多少?

1 个答案:

答案 0 :(得分:0)

有两点要考虑:

  1. 就理论而言,就避免感知到的延迟而言,避免JSON解析器可能不会影响网络延迟。

  2. 只有测试可以正确观察性能变化。理论虽然不错,但是引擎盖下进行了复杂的优化,它们产生了无法预料的效果。

网络延迟

该理论背后的原因是TCP / IP数据包的MTU。这两种消息可能都适合在一个数据包中,因此网络层的行为可能相同。

另一方面,如果您有很多邮件,则可能无法在同一数据包中容纳更多邮件,从而优化了网络流量(这仍然值得怀疑,因为这取决于邮件频率)。

我不确定,但是据我所知,野外的MTU值通常在500字节以下。

解析器延迟

另一方面,一旦客户端获取数据,二进制数据通常比JSON更快,更容易解析。

这些是非常短的消息,但是,内存消耗和解析速度很可能会影响到客户端为止的感知延迟。

请注意,感知延迟不会改变网络延迟,但会改变客户端的响应能力以及事件转化为感知状态变化的速度。