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

相關文章
相關標籤/搜索