答案 0 :(得分:10)
最近添加了对Sesssion.setIdleTimeout(long ms)的支持,以支持我们目前正在进行的JSR-356(javax.websocket)工作。
但是,对于9.0.0.RC2,您可以在创建会话之前提前设置空闲超时(这是固定的,希望将其转换为RC3)
服务器端选项A:WebSocketServlet init-param
在您的websocket servlet的WEB-INF/web.xml
中,指定以下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选项
这适用于服务器或客户端websockets。
注意:您不能将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)
{
}
}