加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java Spring Tomcat中快速关闭无响应的Websocket?

发布时间:2020-12-14 17:48:56 所属栏目:Java 来源:网络整理
导读:我有一个实时应用程序,客户端使用websockets连接到运行 Spring Boot Tomcat的Spring Framework服务器.我想要服务器快速(5秒钟内)检测客户端由于网络断开连接或其他问题而停止响应并关闭Websocket. 我努力了 如文档中所述,将“最大会话空闲超时”设置为“配置
我有一个实时应用程序,客户端使用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服务器事件

Spring FrameworkTomcat服务器如何快速检测到客户端已断开连接或没有响应关闭Websocket?

解决方法

Application Events可能会帮你

PS:Annotation driven events

PS2:我为你做了example project

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读