首页 > 解决方案 > 如何识别 Session 的所有者 - Spring-Boot Websockets

问题描述

我正在使用没有 Stomp 的 websockets。决定 USer WebSocketSession 属于谁的正确方法是什么?

在我的 WsConfig 中,我使用:

@Configuration
@EnableWebSocket
public class WebSocketServerConfiguration implements WebSocketConfigurer {

    protected final CustomWebSocketHandler webSocketHandler;

    @Autowired
    public WebSocketServerConfiguration(CustomWebSocketHandler webSocketHandler) {
        this.webSocketHandler = webSocketHandler;

}
    @SuppressWarnings("NullableProblems")
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(webSocketHandler, "/ws")
                .addInterceptors();
    }
}

我的 WsHandler 目前是空的:

@Service
public class SplitBillWebSocketHandler extends TextWebSocketHandler {


    @Override
    public void handleTransportError(WebSocketSession session, Throwable throwable) throws Exception {

    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
         
    }

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
             //determine User for session
              User user = determineUser(session);
             sessionStorage.add(user.getName(),session);
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage jsonTextMessage) throws Exception {

    }
}

确定用户的方法是什么?或者这样做的最佳做法是什么?

我是否需要从客户端向 websocket URL 传递一些参数(据我所知这不是标准的),或者如何识别会话?

感谢帮助!

标签: javaspring-boot

解决方案


推荐阅读