同じアプリケーション内で、ときどきwebsocketセッション(dis)接続を追跡する必要があります。Spring Websocketサポート/ Stompを使用してセッション(dis)接続イベントを処理する
SessionConnectedEvent
Sを追跡するために接続している間、私は、次の例のように、いくつかのヘッダを渡す:
を、そのようなイベントを容易リスナーとStompHeaderAccessor
を使用して傍受されます
public class SessionConnectedEventListener implements ApplicationListener<SessionConnectedEvent> {
@Override
public void onApplicationEvent(SessionConnectedEvent event) {
StompHeaderAccessor sha = StompHeaderAccessor.wrap(event.getMessage());
String messageType = StompUtils.getHeaderValue("messageType", sha);
// handle business cases depending on the message type
}
}
ハッキーに見えますが、機能します。
一方、切断時(SessionDisconnectEvent
)、StompHeaderAccessor
内にはsessionId
以外は表示されません。元のセッション/クライアント情報への単一の参照ではありません。 :-(
1)接続時にヘッダーを使用するよりも、セッションに接続されたイベントを区別するための、よりクリーンな方法が存在しますか?
2)セッションの切断中にビジネスデータを渡す方法はありますか?だから私は別のビジネスロジックを処理することができます私のアプリ内のどこに切断が発生した。
2)特にそれは大切ではありません。主に、ある種の状態を格納することを意味するためですが、とにかく感謝します。 – tduchateau