2

请参阅https://stackoverflow.com/questions/41810306/appointment-scheduling ...。

4

1 回答 1

10

最近添加了对 Sesssion.setIdleTimeout(long ms) 的支持,以支持我们目前正在进行的 JSR-356 (javax.websocket) 工作。

但是,使用 9.0.0.RC2,您可以在创建 Session 之前执行以下操作以提前设置空闲超时(这个问题正在修复,希望能进入 RC3)

服务器端选项 A:WebSocketServlet init-param

在您WEB-INF/web.xml的 websocket servlet 中,指定以下 init-param

<init-param>
  <param-name>maxIdleTime</param-name>
  <param-value>10000</param-value>
</init-param>

服务器端选项 B:随着 WebSocketFactory 的策略更改

在您的 WebSocketServlet.configure(WebSocketServletFactory factory) 调用中

@Override
public void configure(WebSocketServletFactory factory)
{
    factory.getPolicy().setIdleTimeout(10000);
}

客户端选项 A:作为 WebSocketClient 设置

WebSocketClient client = new WebSocketClient();
client.getPolicy().setIdleTimeout(10000);
client.start();

带注释的@WebSocket 选项

这将适用于服务器或客户端 websocket。

注意:您不能将 WebSocketListener 和 @WebSocket 注释混合在一起

import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;

@WebSocket(maxIdleTime=10000)
public class MySocket
{
    @OnWebSocketClose
    public void onClose(int statusCode, String reason)
    {
    }

    @OnWebSocketConnect
    public void onConnect(Session sess)
    {
    }

    @OnWebSocketError
    public void onError(Throwable cause)
    {
    }

    @OnWebSocketMessage
    public void onText(String message)
    {
    }
}
于 2013-03-01T16:09:40.870 回答