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的處理空閒的相關方法)