Я использую spring-websocket и у меня есть эти два перехватчика
<websocket:client-inbound-channel>
<websocket:executor core-pool-size="100" max-pool-size="200" keep-alive-seconds="600"/>
<websocket:interceptors>
<ref bean="myInterceptor"/>
</websocket:interceptors>
</websocket:client-inbound-channel>
<websocket:client-outbound-channel>
<websocket:executor core-pool-size="100" max-pool-size="200" keep-alive-seconds="600"/>
<websocket:interceptors>
<ref bean="myOutInterceptor"/>
</websocket:interceptors>
</websocket:client-outbound-channel>
Я использую StompHeaderAccessor для переноса сообщения в preSend(Message<?> message, MessageChannel channel)
в обоих перехватчиках.
Я используюследующие для доступа к атрибутам сеанса во входящем перехватчике:
...
StompHeaderAccessor sha = StompHeaderAccessor.wrap(message);
// ignore non-STOMP messages like heartbeat messages
if(sha.getCommand() == null) {
return message;
}
String sessionId = sha.getSessionId();
Map<String, Object> sessionAttributes = sha.getSessionAttributes();
...
Проблема в том, что sha.getSessionAttributes();
во входящем перехватчике возвращает данные, но когда я вызываю sha.getSessionAttributes();
в исходящем перехватчике, он возвращает ноль.
Как я могу получить доступ к атрибутам сеанса от исходящего перехватчика?