我有一个实时应用程序,客户端使用websockets连接到运行
Spring Boot Tomcat的Spring Framework服务器.我想要服务器快速(5秒钟内)检测客户端由于网络断开连接或其他问题而停止响应并关闭Websocket.
我努力了
>如文档中所述,将“最大会话空闲超时”设置为“配置WebSocket引擎”
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
@Bean public WebSocketHandler clientHandler() { return new PerConnectionWebSocketHandler(ClientHandler.class); } @Bean public ServletServerContainerfactorybean createWebSocketContainer() { ServletServerContainerfactorybean container = new ServletServerContainerfactorybean(); container.setMaxSessionIdleTimeout(5000); container.setAsyncSendTimeout(5000); return container; }
我不知道这是否正确实现,因为我没有看到ServletServerContainerfactorybean和我的一代ClientHandler之间的链接.
>每2.5秒从服务器发送ping消息.在手动断开客户端断开网络连接后,服务器可以快速地发送ping 30秒,直到出现传输错误.
> 1和2同时
> 1和2,并在application.properties中设置server.session-timeout = 5
我的测试方法是:
>将websocket从笔记本电脑客户端连接到Tomcat服务器
>使用物理开关关闭笔记本电脑上的网络连接
>等待Tomcat服务器事件