Dmy*_*hko 1 spring-mvc sockjs spring-websocket stompjs
我希望能够检测到用户何时失去了与服务器的连接(关闭的选项卡、失去了互联网连接等)我在我的客户端上通过 Sockjs 使用 stompjs,在我的服务器上使用 spring mvc websockets。
我如何检测客户端何时失去连接。这是我如何配置我的 websocket 消息 brocket:
@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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器类,它实际上处理传入的套接字消息:
@RestController
@CrossOrigin
public class WebMessagingController {
@MessageMapping("/chat/message")
public void newUserMessage(String json) throws IOException {
messagesProcessor.processUserMessage(json);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我使用从TextWebSocketHandler扩展的类,我将有 bean 能够覆盖在客户端连接和断开连接时调用的方法,但我认为这不适用于sock-js 客户端。谢谢你。
除了 Artem 的响应之外,您还可以在任何spring bean 中使用 @EventListener 注释:
@EventListener
public void onDisconnectEvent(SessionDisconnectEvent event) {
LOGGER.debug("Client with username {} disconnected", event.getUser());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4730 次 |
| 最近记录: |