2
如何在Java Spring WebSocketStompClient中獲取會話ID?如何在Spring WebSocketStompClient中獲取會話ID?
我有WebSocketStompClient和StompSessionHandlerAdapter,哪些實例可以很好地連接到我的服務器上的websocket。 WebSocketStompClient使用SockJsClient。
但我不知道如何獲得WebSocket連接的會話ID。在客戶端與STOMP會話處理程序的代碼
private class ProducerStompSessionHandler extends StompSessionHandlerAdapter {
...
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
...
}
跺腳會話包含會話ID,它是從服務器會話ID不同。 所以從這個IDS:
DEBUG ... Processing SockJS open frame in WebSocketClientSockJsSession[id='d6aaeacf90b84278b358528e7d96454a...
DEBUG ... DefaultStompSession - Connection established in session id=42e95c88-cbc9-642d-2ff9-e5c98fb85754
我首先需要會話ID,從WebSocketClientSockJsSession。 但我沒有在WebSocketStompClient或SockJsClient中找到任何方法來檢索會話標識...
謝謝!由於服務器也與JavaScript客戶端一起工作,所以我通過請求將會話ID發送給Java客戶端。 – Irina
而不是編寫自己的攔截器,可以使用內置的['HttpSessionHandshakeInterceptor'](https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/javadoc-api/org/ springframework的/ WEB /插座/服務器/支持/ HttpSessionHandshakeInterceptor.html)。 – izstas