如何在 Java Spring WebSocketStompClient 中获取 session ID?
我有 WebSocketStompClient 和 StompSessionHandlerAdapter,它们可以很好地连接到我服务器上的 websocket。 WebSocketStompClient 使用 SockJsClient。
但我不知道如何获取 websocket 连接的 session ID。在客户端带有 stomp session 处理程序的代码中
private class ProducerStompSessionHandler extends StompSessionHandlerAdapter {
...
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
...
}
stomp session 包含session id,与服务器上的session id不同。 所以从这个 ids 开始:
DEBUG ... Processing SockJS open frame in WebSocketClientSockJsSession[id='d6aaeacf90b84278b358528e7d96454a...
DEBUG ... DefaultStompSession - Connection established in session id=42e95c88-cbc9-642d-2ff9-e5c98fb85754
我需要来自 WebSocketClientSockJsSession 的第一个 session ID。 但是我没有在 WebSocketStompClient 或 SockJsClient 中找到任何方法来检索诸如 session ID 之类的东西......
最佳答案
可以使用@Header
注解来访问sessionId:
@MessageMapping("/login")
public void login(@Header("simpSessionId") String sessionId) {
System.out.println(sessionId);
}
在没有任何自定义拦截器的情况下它对我来说工作正常
关于java - 如何在 Spring WebSocketStompClient 中获取 Session Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243543/