springboot+websocket 实现主动断开
WebSocket连接可以通过两种方式断开:
- 客户端主动发起关闭连接请求
客户端可以在任何时候通过发送CloseFrame来关闭WebSocket连接。例如,在JavaScript中,可以使用WebSocket对象的close()方法来关闭连接:
websocket.close();
在SpringBoot中,可以在WebSocket处理器中重写onClose()方法来处理连接关闭事件:
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
// 处理连接关闭事件
}
}
- 服务器端主动断开连接
服务器端可以在任何时候通过调用WebSocketSession对象的close()方法来关闭WebSocket连接。例如,在SpringBoot中,可以在WebSocket处理器中的任何方法中调用close()方法来关闭连接:
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
private WebSocketSession session;
@Override
public void afterConnectionEstablished(WebSocketSession session) {
this.session = session;
}
public void closeConnection() {
try {
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的例子中,WebSocket处理器中的closeConnection()方法可以在任何时候被调用来关闭连接。需要注意的是,服务器端关闭连接时,应该在WebSocket处理器中保存WebSocketSession对象的引用,以便后续关闭连接时使用
原文地址: https://www.cveoy.top/t/topic/c8WY 著作权归作者所有。请勿转载和采集!