Telegram Group & Telegram Channel
🚀 Spring WebFlux with Server-Sent Events 🚀

Повышайте интерактивность своих приложений с помощью Spring WebFlux и Server-Sent Events (SSE)! 🔥

Что такое Server-Sent Events?
SSE — механизм, позволяющий серверу «толкать» данные клиенту по одному направлению (сервер → браузер) через постоянное HTTP-соединение. Идеально подходит для оповещений, обновлений статуса, live-лент и любых реальных данных, где не требуется двунаправленный сокет.

Почему WebFlux + SSE?
🌀 *Реактивная модель*
WebFlux построен на реактивных потоках (`Flux`/`Mono`), что позволяет обрабатывать тысячи параллельных соединений с минимальным использованием ресурсов.
⏱️ *Низкая задержка*
Вместо опроса (polling) клиент сразу получает новые события, как только сервер их публикует.
⚙️ *Простота интеграции*
Spring WebFlux предоставляет готовые абстракции для SSE, достаточно вернуть Flux<ServerSentEvent<...>> из контроллера.

Пример простого контроллера SSE в Spring WebFlux

@RestController
public class SseController {

@GetMapping(value = "/sse-stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> streamEvents() {
return Flux.interval(Duration.ofSeconds(1))
.map(seq -> ServerSentEvent.<String>builder()
.id(String.valueOf(seq))
.event("tick")
.data("Тик №" + seq)
.build()
);
}
}


• Здесь Flux.interval() генерирует последовательность чисел каждую секунду.
• Мы формируем ServerSentEvent<String> с идентификатором id, именем события event и полезными данными data.
• Браузер или любой клиент, подписанный на /sse-stream, будет получать сообщение каждую секунду без повторного HTTP-запроса.

Как использовать на клиенте?

<script>
const evtSource = new EventSource("/sse-stream");
evtSource.addEventListener("tick", e => {
console.log("Новое событие:", e.data);
// Можно обновлять UI: например, timestamp или счётчик
});
evtSource.onerror = err => console.error("SSE ошибка:", err);
</script>



• EventSource автоматически подключается к указанному URL и слушает серверные события.
• Метод addEventListener("tick", ...) обрабатывает только события с именем tick.

• Советы и подводные камни
⚠️ Обработка отмены (cancel)
Когда клиент закрывает страницу или отключается, WebFlux автоматически отменит подписку на Flux. При необходимости можно добавить .doOnCancel(...) для логирования или очистки ресурсов.
🛠️ Ошибка и повторная попытка (retry)
При сетевых сбоях браузер сам попытается переподключиться к тому же URL. Если вы хотите контролировать логику на сервере, используйте .retry() или .onErrorResume() в потоке Flux.
🔒 Безопасность
При необходимости защищайте URL SSE с помощью авторизации (JWT, OAuth2) или rate-limit’а, чтобы злоумышленники не «залили» ресурс.
📈 Масштабирование
Благодаря реактивной модели WebFlux вы можете легко масштабировать приложение на Kubernetes, не опасаясь, что сотни SSE-потоков «съедят» память и потоки.

• Где применить?
• Живые обновления статуса задач и билдов (CI/CD, DevOps)
• Чат-сообщения или лента комментариев в режиме «реального времени»
• Мониторинг метрик и дашборды (оперативные алерты)
• Финансовые или спортивные котировки (ticker, live scores)
• Оповещения об изменениях в БД (CDC), когда нужен асинхронный пуш

@javatg



tg-me.com/javatg/1863
Create:
Last Update:

🚀 Spring WebFlux with Server-Sent Events 🚀

Повышайте интерактивность своих приложений с помощью Spring WebFlux и Server-Sent Events (SSE)! 🔥

Что такое Server-Sent Events?
SSE — механизм, позволяющий серверу «толкать» данные клиенту по одному направлению (сервер → браузер) через постоянное HTTP-соединение. Идеально подходит для оповещений, обновлений статуса, live-лент и любых реальных данных, где не требуется двунаправленный сокет.

Почему WebFlux + SSE?
🌀 *Реактивная модель*
WebFlux построен на реактивных потоках (`Flux`/`Mono`), что позволяет обрабатывать тысячи параллельных соединений с минимальным использованием ресурсов.
⏱️ *Низкая задержка*
Вместо опроса (polling) клиент сразу получает новые события, как только сервер их публикует.
⚙️ *Простота интеграции*
Spring WebFlux предоставляет готовые абстракции для SSE, достаточно вернуть Flux<ServerSentEvent<...>> из контроллера.

Пример простого контроллера SSE в Spring WebFlux


@RestController
public class SseController {

@GetMapping(value = "/sse-stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> streamEvents() {
return Flux.interval(Duration.ofSeconds(1))
.map(seq -> ServerSentEvent.<String>builder()
.id(String.valueOf(seq))
.event("tick")
.data("Тик №" + seq)
.build()
);
}
}


• Здесь Flux.interval() генерирует последовательность чисел каждую секунду.
• Мы формируем ServerSentEvent<String> с идентификатором id, именем события event и полезными данными data.
• Браузер или любой клиент, подписанный на /sse-stream, будет получать сообщение каждую секунду без повторного HTTP-запроса.

Как использовать на клиенте?

<script>
const evtSource = new EventSource("/sse-stream");
evtSource.addEventListener("tick", e => {
console.log("Новое событие:", e.data);
// Можно обновлять UI: например, timestamp или счётчик
});
evtSource.onerror = err => console.error("SSE ошибка:", err);
</script>



• EventSource автоматически подключается к указанному URL и слушает серверные события.
• Метод addEventListener("tick", ...) обрабатывает только события с именем tick.

• Советы и подводные камни
⚠️ Обработка отмены (cancel)
Когда клиент закрывает страницу или отключается, WebFlux автоматически отменит подписку на Flux. При необходимости можно добавить .doOnCancel(...) для логирования или очистки ресурсов.
🛠️ Ошибка и повторная попытка (retry)
При сетевых сбоях браузер сам попытается переподключиться к тому же URL. Если вы хотите контролировать логику на сервере, используйте .retry() или .onErrorResume() в потоке Flux.
🔒 Безопасность
При необходимости защищайте URL SSE с помощью авторизации (JWT, OAuth2) или rate-limit’а, чтобы злоумышленники не «залили» ресурс.
📈 Масштабирование
Благодаря реактивной модели WebFlux вы можете легко масштабировать приложение на Kubernetes, не опасаясь, что сотни SSE-потоков «съедят» память и потоки.

• Где применить?
• Живые обновления статуса задач и билдов (CI/CD, DevOps)
• Чат-сообщения или лента комментариев в режиме «реального времени»
• Мониторинг метрик и дашборды (оперативные алерты)
• Финансовые или спортивные котировки (ticker, live scores)
• Оповещения об изменениях в БД (CDC), когда нужен асинхронный пуш

@javatg

BY Java




Share with your friend now:
tg-me.com/javatg/1863

View MORE
Open in Telegram


Java Telegram | DID YOU KNOW?

Date: |

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Dump Scam in Leaked Telegram Chat

A leaked Telegram discussion by 50 so-called crypto influencers has exposed the extraordinary steps they take in order to profit on the back off unsuspecting defi investors. According to a leaked screenshot of the chat, an elaborate plan to defraud defi investors using the worthless “$Few” tokens had been hatched. $Few tokens would be airdropped to some of the influencers who in turn promoted these to unsuspecting followers on Twitter.

Java from ca


Telegram Java
FROM USA