服务端心跳机制分析
启动心跳检测
public HeaderExchangeServer(Server server) {
if (server == null) {
throw new IllegalArgumentException("server == null");
}
this.server = server;
this.heartbeat = server.getUrl().getParameter(Constants.HEARTBEAT_KEY, 0);//心跳周期间隔时间 默认60000,
this.heartbeatTimeout = server.getUrl().getParameter(Constants.HEARTBEAT_TIMEOUT_KEY, heartbeat * 3);//心跳超时时间, 默认是heartbeat 的3倍
if (heartbeatTimeout < heartbeat * 2) {//heartbeatTimeout 不能小于heartbeat 的2倍
throw new IllegalStateException("heartbeatTimeout < heartbeatInterval * 2");
}
startHeartbeatTimer();//启动心跳检测线程
}
HeaderExchangeServer构造方法,它获取了心跳相关参数,启动心跳线程,这个心跳任务 每隔一段时间向当前server的所有channel(就是所有客户端)发送心跳。