Java SpringでセッションIDを取得する方法WebSocketStompClient?Spring WebSocketStompClientでセッションIDを取得するには?
WebSocketStompClientとStompSessionHandlerAdapterがあります。これらのインスタンスはサーバーのwebsocketに正常に接続します。 WebSocketStompClientはSockJsClientを使用します。
しかし、websocket接続のセッションIDを取得する方法がわかりません。クライアント側のストンプセッションハンドラを持つコードで
private class ProducerStompSessionHandler extends StompSessionHandlerAdapter {
...
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
...
}
stompセッションには、サーバー上のセッションIDとは異なるセッションIDが含まれています。したがって、このIDSから :
DEBUG ... Processing SockJS open frame in WebSocketClientSockJsSession[id='d6aaeacf90b84278b358528e7d96454a...
DEBUG ... DefaultStompSession - Connection established in session id=42e95c88-cbc9-642d-2ff9-e5c98fb85754
私はWebSocketClientSockJsSessionから、最初のセッションIDが必要です。 しかし、私はあなたが以下のように独自のインターセプタを定義し、カスタム属性としてセッションIDを設定する必要があり、セッションIDを取得するには... WebSocketStompClientまたはSockJsClientに
ありがとうございます!サーバーがjavascriptクライアントでも動作するため、その要求によってJavaクライアントにセッションIDを送信します。 – Irina
独自のインターセプタを作成する代わりに、組み込みの['HttpSessionHandshakeInterceptor'](https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/javadoc-api/org/)を使用することができます。 springframework/web/socket/server/support/HttpSessionHandshakeInterceptor.html)を参照してください。 – izstas