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)。该方法会影响
setRequestInterval(int keepAliveRequestInterval)
设置心跳包发送周期
2、KeepAliveRequestTimeoutHandler
一、重写KeepAliveRequestTimeoutHandler须要实现下面四个方法
isResponse
判断是否为心跳回复
isRequest
判断客户端发送的数据是否为心跳包
getRequest
获取心跳包
getResponse
获取回复心跳包
二、以上四个方法调用顺序:
在收到客户端数据时,调用isResponse,isRequest,若isRequest返回true,再调用getResponse
往客户端发送数据时,调用isResponse,isRequest
若是设置了心跳包发送周期(setRequestInterval),会周期调用getRequest(要注意的是,如
setForwardEvent设为true,那么调用getRequest,也会调用其余filter,handler的处理空闲的相关方法)