Spring Boot 2 - Webflux - Websocket - Активировать сжатие - PullRequest
0 голосов
/ 06 ноября 2018

Я использую:

  • Spring Boot 2.1.0 Release
  • Webflux (не MVC)
  • WebSocket
  • Реактивная Нетти

И я хотел бы сжать возвращенную полезную нагрузку с помощью «GZIP» (или любого другого сжатия). Я пытался с конфигурацией в application.yml:

server.compression.enabled: true

Но возвращаемая полезная нагрузка по-прежнему в текстовом формате.

Кто-нибудь знает, как решить эту проблему? Благодаря.

1 Ответ

0 голосов
/ 07 ноября 2018

Свойство конфигурации server.compression.enabled относится к сжатию ответов HTTP, поэтому это не приведет к достижению желаемой цели.

С помощью WebSocket вы можете активировать сжатие каждого сообщения с расширением протокола, если оно поддерживается выбранным вами контейнером. Это должно быть согласовано между клиентом и сервером во время рукопожатия с использованием Sec-WebSocket-Extensions. Так что в вашем случае активации недостаточно, вам нужно включить это и на клиенте. См. rfc7692 .

Некоторые контейнеры (например, Jetty в последних версиях) по умолчанию включают эти расширения сжатия. В случае Reactor Netty, я не уверен, что это так.

Для следующих шагов вы можете:

  • Убедитесь, что ваш клиент отправляет этот заголовок и поддерживает это расширение протокола
  • Переключитесь на Jetty, чтобы проверить, работает ли это из коробки
  • Если он работает с Jetty, а не с Reactor Netty, вам следует создать проблему на их системе отслеживания проблем , поскольку часть инфраструктуры Netty может отсутствовать (WebSocketServerCompressionHandler?)

Редактировать

Я создал реактор / реактор-нетто # 507 .

...