我已经安装了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 ??
答案 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