如何在Spring websocket的SessionDisconnectEvent中使用sessionId

dis*_*dev 5 spring websocket

我正在尝试用侦听器捕获SessionDisconnectEvent事件:


    @Component
public class WebSocketDisconnectListener implements ApplicationListener {

    @Override
    @EventListener
    public void onApplicationEvent(SessionDisconnectEvent event) {
        Principal principal = event.getUser();
        logger.info("websocket disconnected {}, user {}", event, principal);
        if (principal != null) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但本金始终为空。所以我发现SessionDisconnectEvent有一个名为 的事件sessionId,但是我该如何使用呢sessionId

哪里可以获得会议或校长?

yag*_*agu 0

尝试这样。

public void onApplicationEvent(SessionDisconnectEvent event) {
        StompHeaderAccessor sha = StompHeaderAccessor.wrap(event.getMessage());
        log.info("Disconnect event [sessionId: " + sha.getSessionId() + " : close status" + event.getCloseStatus() + "]");
    }
Run Code Online (Sandbox Code Playgroud)