2.5 会话保持与过期清理

有时会话会意外断开,会话占用的资源不会被释放。所有需要一种会话过期机制,该机制为维护会话的最近访问时间,当会话接收到任何帧数据时,都会更新该时间。间隔一段时间扫描所有会话,如果该会话超过预先定义的一段时间内没有被访问,则该会话需要被关闭,关闭原因为超时。

如果会话上一直有数据交互,最近访问时间会持续更新,会话得以保持。如果会话上没有数据交互,为了保持会话,则需要客户端间隔一段时间向服务器发送心跳检测 ping,服务端收到心跳检测 ping 后,需尽快回复心跳应答 pong。通过 ping/pong,客户端和服务端之间的会话得以保持。关于心跳检测/应答可查看 第六章 心跳检测