2. 心跳插件
当出现非正常的网络断连,通信双方可能无法感知到该情况(譬如拔网线、服务器断电)。 此时需要通过业务层面的心跳消息感知异常并释放网络资源。
# 构造参数
- heartRate:心跳频率,每隔 hearRate 时长发送一次心跳消息。
- timeout:超时时间,超过 timeout 时长没收到任何消息则触发超时回调
timeoutCallback
。 - timeUnit:heartRate 和 timeout 参数的时间单位。
- timeoutCallback:超时回调方法,默认断开网络连接,支持自定义实现。
# 接口定义
- sendHeartRequest:发送心跳消息,当空闲时长超过 heartRate 时触发。
- isHeartMessage:接收到的消息是否为心跳消息。若为心跳消息,将不会进入
MessageProcessor#process
方法。
# 示例
完整示例见:HeartPluginDemo (opens new window)
processor.addPlugin(new HeartPlugin<String>(5, 7, TimeUnit.SECONDS) {
@Override
public void sendHeartRequest(AioSession session) throws IOException {
WriteBuffer writeBuffer = session.writeBuffer();
byte[] content = "heart message".getBytes();
writeBuffer.writeInt(content.length);
writeBuffer.write(content);
}
@Override
public boolean isHeartMessage(AioSession session, String msg) {
return "heart message".equals(msg);
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14