MINA的心跳filter的使用

1、KeepAliveFilter html

一、构造函数: apache

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus) api

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus, KeepAliveRequestTimeoutHandler policy) session

第一个使用默认的KeepAliveRequestTimeoutHandler.CLOSE 函数

第二个使用指定(或本身定义的)KeepAliveRequestTimeoutHandler spa

二、方法: rest

setForwardEvent(boolean forwardEvent)
htm

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

setRequestTimeout(int keepAliveRequestTimeout)
io

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

KeepAliveRequestTimeoutHandler)。该方法会影响

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

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

setRequestInterval(int keepAliveRequestInterval)

设置心跳包发送周期

2、KeepAliveRequestTimeoutHandler

一、重写KeepAliveRequestTimeoutHandler须要实现下面四个方法

isResponse

判断是否为心跳回复

isRequest

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

getRequest

获取心跳包

getResponse

获取回复心跳包

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

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

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

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

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

相关文章
相关标签/搜索