Spring Cloud Gateway не маршрутизирует запросы на основе веб-сокетов - PullRequest
0 голосов
/ 09 января 2020

Чтобы добавить маршрут для микросервиса на основе веб-сокета, я настроил свое приложение в соответствии с документацией по облачному шлюзу Spring *

  - id: sample_service_web_socket_handshake_url
    uri: lb:ws://sample-service
    predicates:
    - Path=/notification-service-ws/**

выше Notification-Service- ws - это URL-адрес рукопожатия веб-сокет-службы

при прямом подключении к этой конечной точке веб-сокета (без весеннего облачного шлюза) без проблем

, но при попытке подключения используя spring-cloud-gateway, шлюз выдает следующий журнал предупреждений

2020-01-09 10:44:02.923  WARN 5155 --- [-server-epoll-5] .a.w.r.e.DefaultErrorWebExceptionHandler : Failed to handle request [GET http://192.168.10.44:4260/notification-service-ws]: Response status 400 with reason "Invalid 'Upgrade' header: {Sec-WebSocket-Version=[13], Sec-WebSocket-Key=[0EJxcMdBmRhZ5suS/INKnQ==], Sec-WebSocket-Extensions=[permessage-deflate; client_max_window_bits], Host=[192.168.10.44:4260]}"

Я убедился, что HTTP-запрос не отправляется службе websocket

1 Ответ

0 голосов
/ 09 января 2020

Проблема устранена после добавления следующих свойств в spring-cloud-gateway application.yml file:

spring:
  application:
    name: burraq-api-gateway
  profiles:
    active: dev
  cloud:
    gateway:
      filter:
        remove-non-proxy-headers:
          headers:
          - Proxy-Authenticate
          - Proxy-Authorization
          - Keep-Alive
          - TE
          - Trailer
          - Transfer-Encoding

Эта проблема возникла из-за того, что весенний облачный шлюз по умолчанию называл заголовки запросов здесь

...