心跳响应前的回调
iohao opened this issue · comments
渔民小镇 commented
有某些业务中,开发者想在心跳消息中加入一些业务数据,比如当前系统时间。
在 ioGame21 中,将对 IdleHook 接口增加 pongBefore 方法,方便开发者对心跳消息的扩展。
public interface IdleHook<IdleEvent> {
/**
* 心跳事件回调
* <pre>
* 这里只需要做你的业务就可以了,比如通知房间内的其他玩家,该用户下线了。
* </pre>
*
* @param userSession userSession
* @param event event
* @return true 断开玩家连接
*/
boolean callback(UserSession userSession, IdleEvent event);
/**
* 心跳响应前的回调
* <pre>
* 开发者可以给心跳消息添加一些额外信息,比如当前时间之类的。
* </pre>
*
* @param idleMessage 心跳消息
*/
default void pongBefore(BarMessage idleMessage) {
}
}
扩展当前时间示例
在心跳消息响应前,把当前时间设置到响应中。
除了设置时间外,开发者可以将任意数据设置到 data 中。BarMessage.data 对应的是 ExternalMessage.data。
public final class MyIdleHook implements SocketIdleHook {
... ... 省略部分代码
@Override
public void pongBefore(BarMessage idleMessage) {
// 把当前时间戳给到心跳接收端
LongValue data = LongValue.of(TimeKit.currentTimeMillis());
idleMessage.setData(data);
}
}
渔民小镇 commented