人类可以以心跳来证明自己的生命依然在运转,服务器可以吗?那么服务器如何来证明自己还“活着”呢?
心跳示意图(来自quanjing.com)
其实,服务器也有自己的“心跳”,心跳包是客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
在获知了断线之后,服务器逻辑可能需要做一些事情,比如断线后的数据清理和重新连接等等,心跳包主要也就是用于长连接的保活和断线处理,有了它我们就可以判断服务器到底是在线还是离线了。