WebSocket 连接在没有发送消息的情况下,可能会因为网络原因或其他原因导致连接断开。在 Spring Boot 中,可以通过配置 WebSocketSession 的超时时间来实现自动断开连接。超时时间可以通过以下方式配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
        registry.setSendTimeLimit(15 * 1000)
            .setSendBufferSizeLimit(512 * 1024)
            .setMessageSizeLimit(128 * 1024);
    }
    
    // ...
}

上面的代码将 WebSocketSession 的超时时间设置为 15 秒。如果在 15 秒内没有发送任何消息,则会自动断开连接。

如果需要手动断开 WebSocket 连接,可以在 Controller 中注入 WebSocketSession 并调用其 close 方法来实现:

@Controller
public class MyController {
    
    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

    @MessageMapping("/close")
    public void close(WebSocketSession session) throws IOException {
        session.close();
    }
    
    // ...
}

上面的代码演示了如何在 Controller 中注入 WebSocketSession,并在收到消息时调用其 close 方法来断开连接。需要注意的是,close 方法会抛出 IOException,需要进行异常处理。

SpringBoot WebSocket 自动断开连接:超时机制与手动关闭

原文地址: https://www.cveoy.top/t/topic/nCsA 著作权归作者所有。请勿转载和采集!

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