WebSocket连接可以通过两种方式断开:

  1. 客户端主动发起关闭连接请求

客户端可以在任何时候通过发送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 {
        // 处理连接关闭事件
    }
}
  1. 服务器端主动断开连接

服务器端可以在任何时候通过调用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录