- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个实时应用程序,客户端使用 websockets 连接运行 Spring Boot Tomcat 的 Spring Framework 服务器。我希望服务器能够快速(在 5 秒内)检测到客户端何时因网络断开或其他问题而停止响应并关闭 websocket。
我试过了
按照文档“配置 WebSocket 引擎”中的描述设置最大 session 空闲超时 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 和我的一代 ClientHandlers 之间的链接。
每 2.5 秒从服务器发送一次 ping 消息。在我通过断开网络连接手动断开客户端后,服务器会愉快地再发送 30 多秒的 ping,直到出现传输错误。
1 和 2 同时
1 和 2 并在 application.properties 中设置 server.session-timeout = 5
我的测试方法是:
Spring FrameworkTomcat 服务器如何快速检测到客户端已断开连接或没有响应关闭 websocket?
最佳答案
关于java - 如何在 Java Spring Tomcat 中快速关闭无响应的 websocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193072/
我是一名优秀的程序员,十分优秀!