对于openfire中的websocket连接,MaxIdleTime不可更改

时间:2014-12-05 10:16:27

标签: websocket xmpp openfire

我已经安装了openfire的websocket插件。现在当在sparkweb端(客户端)如果用户的网络关闭然后在openfire上我们仍然可以看到它的存在5分钟,之后它的存在是离线的。当我看到websocket插件war文件时,它使用了扩展websocketServlet的xmppservlet。在websocketServlet中设置了maxIdleTime,其中websocketServlet从int参数中获取,但我没有在任何web.xml文件中的任何地方看到这个init参数的条目

下面是websocketServlet的代码片段,其中设置了init函数maxidleTime: - 但我没有在任何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 ??

1 个答案:

答案 0 :(得分: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