2014-12-05 27 views
0

我已經安裝了openfire的websocket插件。現在當sparkweb端(客戶端),如果用戶的網絡關閉,然後在openfire上,我們仍然可以看到它的存在5分鐘後,其存在離線。當我看到websocket插件war文件時,它使用擴展websocketServlet的xmppservlet。在websocketServlet maxIdleTime設置其websocketServlet從int PARAM得到,但我不隨地看到這個初始參數的條目任何web.xml文件MaxIdleTime在openfire中不可更改websocket連接

下面是其中初始化函數maxidleTime設置websocketServlet的代碼片段: - 但我不請參閱任何web.xml默認5分鐘maxIdleTime條目

@Override 
public void init() throws ServletException 
{ 
    try 
    { 
     String bs = getInitParameter("bufferSize"); 
     _webSocketFactory = new WebSocketFactory(this, bs == null ? 8192 : Integer.parseInt(bs)); 
     _webSocketFactory.start(); 

     String max = getInitParameter("maxIdleTime"); 
     if (max != null) 
      _webSocketFactory.setMaxIdleTime(Integer.parseInt(max)); 

     max = getInitParameter("maxTextMessageSize"); 
     if (max != null) 
      _webSocketFactory.setMaxTextMessageSize(Integer.parseInt(max)); 

     max = getInitParameter("maxBinaryMessageSize"); 
     if (max != null) 
      _webSocketFactory.setMaxBinaryMessageSize(Integer.parseInt(max)); 

     String min = getInitParameter("minVersion"); 
     if (min != null) 
      _webSocketFactory.setMinVersion(Integer.parseInt(min)); 
    } 
    catch (ServletException x) 
    { 
     throw x; 
    } 
    catch (Exception x) 
    { 
     throw new ServletException(x); 
    } 
} 

有沒有人有任何想法如何設置maxIdleTime?

回答

0

您可以修改文件(Openfire的-的WebSockets/src目錄/ COM/ifsoft /的WebSockets/servlet的/ XMPPServlet.java)

@Override public void configure(WebSocketServletFactory factory) 
{ 
    //set websocket idle timeout 30000 
    factory.getPolicy().setIdleTimeout(30000); 
    factory.setCreator(new WSocketCreator()); 
} 

這對我的作品。我還在https://github.com/gunblues/strophe-openfire-websocket上重建了插件websockets.war,但僅限於openfire3.10