MINA的心跳filter的使用

一、KeepAliveFilter

1、构造函数:

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus)

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus, KeepAliveRequestTimeoutHandler policy)

第一个使用默认的KeepAliveRequestTimeoutHandler.CLOSE

第二个使用指定(或自己定义的)KeepAliveRequestTimeoutHandler

2、方法:

setForwardEvent(boolean forwardEvent)

设置是否把IoEventType.SESSION_IDLE往下传(下一个filter,handler),如果设为true,空闲时还会使用filter,handler处理空闲的相关方法。

setRequestTimeout(int keepAliveRequestTimeout)

设置接收心跳回复的期限(就是KeepAliveFilter发了一个心跳包,如果在设置的期限内没收到回复就会调

用KeepAliveRequestTimeoutHandler)。该方法会影响

IoSessionConfig.setIdleTime(IdleStatus, int)。就是如果设

setRequestTimeout,调用setIdleTime进行的设置就不会生效

setRequestInterval(int keepAliveRequestInterval)

设置心跳包发送周期

二、KeepAliveRequestTimeoutHandler

1、重写KeepAliveRequestTimeoutHandler需要实现下面四个方法

isResponse

判断是否为心跳回复

isRequest

判断客户端发送的数据是否为心跳包

getRequest

获取心跳包

getResponse

获取回复心跳包

2、以上四个方法调用顺序:

在收到客户端数据时,调用isResponse,isRequest,若isRequest返回true,再调用getResponse

往客户端发送数据时,调用isResponse,isRequest

如果设置了心跳包发送周期(setRequestInterval),会周期调用getRequest(要注意的是,如

setForwardEvent设为true,那么调用getRequest,也会调用其他filter,handler的处理空闲的相关方法


你可能感兴趣的:(MINA的心跳filter的使用)