Как установить заголовок ContentLenght в ответ на обновление WebSocket с помощью Spring? - PullRequest
0 голосов
/ 11 марта 2020

Мне нужно ответить заголовком Content-Lenght на запрос на обновление моих клиентов websocket. Как мне это сделать? Это моя попытка использовать пользовательский HandshakeInterceptor:

import java.util.Map;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.web.socket.server.HandshakeFailureException;
import org.springframework.web.socket.server.HandshakeHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;

@Configuration
@EnableWebSocket
public class SpringWebSocketConfig implements WebSocketConfigurer  {

    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new SocketHandler(), "/ws").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor() {

            @Override
            public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
                    WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
                response.getHeaders().setContentLength(0);
                return true;
            }

            @Override
            public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
                    WebSocketHandler wsHandler, Exception exception) {

            }

        });
    }

}

Но это не работает. Я могу установить любой заголовок, и он работает:

response.getHeaders (). Add ("TEST", "TEST");

Но я не вижу Content-Length. Я пробовал также пользовательские настройки заголовка вместо setContentLength():

response.getHeaders().add("Content-Length","0");

Но клиент не видит этот заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...