Вы действительно можете использовать Flux
для потоковой передачи данных с помощью Spring WebFlux.
Spring WebFlux использует тип носителя "application/stream+json
для потоковой передачи JSON с разделителями строк и "text/event-stream"
для событий, отправленных сервером.Первый весьма полезен для связи между серверами (вам нужен клиент, который поддерживает этот формат), а второй - для связи между серверами (браузеры изначально поддерживают это).
Таким образом, вы можете передавать данные многим клиентами даже использовать один и тот же источник (вы должны посмотреть на создание одного экземпляра Flux.share()
).
Теперь я не уверен, что под «сокетом» вы имеете в виду сокеты TCP или socket.io.TCP-сокеты довольно низкого уровня, и WebFlux поддерживает WebSockets, если вы ищете аналогичные функции.Если вы ищете транспорты более высокого уровня, такие как STOMP / socket.io, которые поддерживают подписки, то WebFlux пока не поддерживает это (Spring Framework в настоящее время работает над поддержкой RSocket ).
Если вы ищете потоковую передачу данных в браузеры, то SSE - лучший выбор здесь (так как потоковая передача JSON изначально не поддерживается).