我希望能够检测用户是否与服务器失去连接(关闭标签页、断网等)。我在客户端使用stompjs和Sockjs,在服务器上使用spring mvc websockets。如何检测客户端是否失去连接?以下是我的websocket消息brocket配置:
我知道如果我使用继承自TextWebSocketHandler的类,我将能够重写在客户端连接和断开时调用的方法,但我不认为这对于sock-js客户端会有效。谢谢。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private TaskScheduler scheduler;
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic").setHeartbeatValue(new long[]{10000, 10000}).setTaskScheduler(scheduler);
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/web").setAllowedOrigins("*").withSockJS();
}
}
这是我的控制器类,它实际处理传入的套接字消息:
@RestController
@CrossOrigin
public class WebMessagingController {
@MessageMapping("/chat/message")
public void newUserMessage(String json) throws IOException {
messagesProcessor.processUserMessage(json);
}
}
我知道如果我使用继承自TextWebSocketHandler的类,我将能够重写在客户端连接和断开时调用的方法,但我不认为这对于sock-js客户端会有效。谢谢。