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

我有一个实时应用程序,其中的客户端使用websockets与运行Spring Boot Tomcat的Spring

Framework服务器连接。我希望服务器快速(在5秒内)检测到客户端由于网络断开或其他问题而停止响应的时间,然后关闭websocket。

我努力了

@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消息。在通过断开网络连接手动断开客户端连接后,服务器会愉快地发送ping命令30秒钟以上,直到出现传输错误。

同时1和2

1和2并server.session-timeout = 5在application.properties中进行设置

我的测试方法是:

将Websocket从便携式计算机客户端连接到Tomcat服务器

使用物理交换机关闭笔记本电脑上的网络连接

等待Tomcat服务器事件

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,你可以使用Java WebSocket API来实现WebSocket后端。以下是一个简单的示例代码: 首先,你需要创建一个类来实现WebSocket的Endpoint: ```java import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; @ServerEndpoint("/websocket") public class WebSocketServer { @OnOpen public void onOpen(Session session) { System.out.println("WebSocket opened: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) throws IOException { System.out.println("Message received: " + message); session.getBasicRemote().sendText("Received: " + message); } @OnClose public void onClose(Session session) { System.out.println("WebSocket closed: " + session.getId()); } @OnError public void onError(Session session, Throwable throwable) { System.out.println("WebSocket error: " + session.getId()); throwable.printStackTrace(); } } ``` 然后,你需要配置一个WebSocket容器来启动WebSocket服务器: ```java import org.apache.catalina.startup.Tomcat; public class WebSocketServerApp { public static void main(String[] args) throws Exception { Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); tomcat.addWebapp("", "path/to/your/webapp"); tomcat.start(); tomcat.getServer().await(); } } ``` 在上面的示例,我们使用了Apache Tomcat作为WebSocket容器。你需要将"path/to/your/webapp"替换为你的Web应用程序的路径。 启动应用程序后,你可以使用WebSocket客户端连接到"/websocket"端点,并发送和接收消息。 请注意,这只是一个简单的示例,你可以根据你的需求进行扩展和定制。你还可以使用其他Java库和框架来实现WebSocket后端,如Spring WebSocket和Jetty等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值