Spring Websocket не работает с ssl (wss) - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение с веб-сокет-соединением между бэкэндом Spring и Angular Frontend за Spring Cloud Gateway, которое отлично работает через http / ws, но не работает вообще.

Что я пробовал и что сработало:

  • запуск angular фронтэнда и пружинного бэкенда напрямую
  • запуск angular фронтэнда и пружинного бэкэнда локально с docker за локальным шлюзом весенних облаков
  • предоставление порта непосредственно в бэкэнд-контейнере docker (испускающий шлюз, который использует ssl на сервере) и запуск внешнего интерфейса angular локально для этого бэкэнда (с angular proxy)

Что не работает:

  • запуск сервера с контейнером docker и использование веб-сокета с https / wss

Я настроил весеннее облако шлюз, как описано здесь https://cloud.spring.io/spring-cloud-gateway/reference/html/:

    - id: websocketinfo
      uri: http://app
      predicates:
        - Host=app.domain.com
        - Path=/api/ws/info/**
    - id: websocket
      uri: ws://app
      predicates:
        - Host=app.domain.com
        - Path=/api/ws/**

Единственное отличие между моим локальным шлюзом (с которым работает связь через веб-сокет) и сервером шлюз в том, что у меня на сервере включен ssl с ключом p12

Сообщение об ошибке, которое я получаю в облачном шлюзе Spring:

io.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 403

В бэкэнд-сервисе Spring я получаю эти много ошибок:

2020-04-09 07:03:55.298  WARN 1 --- [p-nio-80-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.util.LinkedHashMap] with preset Content-Type 'application/javascript;charset=UTF-8']

Это меня очень смущает, так как это похоже на ошибку, которая должна произойти независимо от того, в какой среде вы запускаете приложение в

1 Ответ

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

Так что, видимо, это была ошибка со старой версией весеннего облачного шлюза. После обновления до весенней версии 2.2.1 все тоже работало с ssl

...