Я использую Interceptor для получения заголовков авторизации, но метод presend выполняется как при установлении соединения, так и при его закрытии. Проблема в том, что когда он закрыт, заголовки выдают исключение NULL, должен ли я сначала проверять наличие NULL или есть лучший способ прервать соединение, чтобы метод preSend не выполнялся? Мой конфиг:
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/api/chat/message")
.setAllowedOrigins("*");
}
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.interceptors(getWebSocketInterceptor());
}
private WebSocketInterceptor getWebSocketInterceptor(){
return new WebSocketInterceptor();
}
Мой WebSocketInterceptor:
public class WebSocketInterceptor implements ChannelInterceptor, HandshakeInterceptor {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
MessageHeaders headers = message.getHeaders();
MultiValueMap<String, String> multiValueMap = headers.get(StompHeaderAccessor.NATIVE_HEADERS,MultiValueMap.class);
for(Map.Entry<String, List<String>> head : multiValueMap.entrySet()) {
System.out.println(head.getKey());
if(head.getKey().equals("Authorization")){
System.out.println(head.getValue());
}
}
return message;
}