2015-04-08 23 views
0

如何設置cometd嵌入式碼頭中的sesion超時值? 以下是我如何設置超時,但在服務器會話中它顯示超時爲-1。嵌入式碼頭中的Cometd會話超時

public void addCometDServletHolder(CometDServlet cometdServlet) { 
    ServletHolder comet = new ServletHolder(cometdServlet); 
    comet.setInitParameter("timeout", "60000"); 
    comet.setInitParameter("ws.idleTimeout", "120000"); 

回答

0

的的cometd ServerSessiontimeout參數控制在/meta/connect通道的cometd心跳消息的頻率。

如果這是您想要調整的,則會有BayeuxServer設置,您在上面的代碼段中設置了60000,並且設置了ServerSession。 如果後者沒有明確設置,則使用前者。

在你的情況下,調用ServerSession.getTimeout()返回-1因爲你沒有把它明確地針對特定ServerSession對象,因此使用BayeuxServer設置。

請注意,此「超時」控制心跳消息的頻率,而不是客戶端崩潰時服務器上的對象的到期時間爲ServerSession

有關CometD配置參數含義的更多信息,請參閱documentation

+0

謝謝sbordet。那我可否知道如何過期'ServerSession'? – usp

+0

您不能直接過期「ServerSession」,但可以斷開它,請參閱對應方法的「ServerSession」API。通常在聊天應用程序中強制斷開客戶端與服務器的連接以踢出/禁止用戶。過期由'maxInterval'參數控制。 – sbordet