Comments 9
Никита, привет!
Как всегда, твой доклад был очень интересным и познавательным — спасибо за информацию!
Хочу добавить небольшое уточнение по теме: Server-Sent Events (SSE) — это действительно один из способов взаимодействия сервера и клиента, но в контексте push-уведомлений для мобильных приложений есть нюансы.
Де-факто стандартом для push-уведомлений остаются:
FCM (Firebase Cloud Messaging) — для устройств с Google-сервисами,
HMS (Huawei Mobile Services) — для устройств Huawei (без Google-сервисов).
Кастомные решения работают нестабильно из-за оптимизации ОС — система может завершать фоновые процессы для экономии ресурсов.
Для ИБ: можно добавить асимметричное шифрование (например, RSA). Данные шифруются перед отправкой, передаются через FCM/HMS в зашифрованном виде (например, в base64), а расшифровка происходит уже на клиенте с помощью второго ключа.
От Web flux наоборот стоит отказываться, ребята из нетфликс, которые были его основными идеологами специально ушли от него на виртуальные потоки и перестали контрибьютить в эту технологию из-за сложности разработки, отладки и поддержки кода на нем.
+1 выпилили у себя webflux в нагруженном апи и заменили на loom. Все работает отлично (java 24)
Упрощает разработку, поддержку, чтение кода. Синхронный код и аналитики и тестировщики понимают чаще всего.
Если тема интересна, могу сделать исследование в контексте того же SSE c Virtual Threads vs WebFlux.
На рисунке наглядно представлено, как Polling, WebSocket и SSE нагружают сеть передаваемыми данными просто при простое «туннеля». А поскольку, мы хотим систему, работающую в энтерпрайз окружении, где каждый лишний байт, помноженный на милионное количество клиентов, может выстрелить нам в ногу, выбираем решение, наименее сильно нагружающее сеть – SSE.

Я конечно извиняюсь но разве не WebSockets решение наименее нагружающее сеть?
Или все же SSE был выбран потому что он проще в применении?
Спасибо, за замечание!
Я честно говоря даже не обратил внимание, когда искал источник..)
Да, согласно исследованию автора так и есть, однако он приводил сравнение поллинга и со стриминг технологиями, и не стал соблюдать точность в исследовании разницы между WS и SSE, так как технически Websocket передает в "тунеле" намного больше технической информации чем SSE.
Думаю, стоит заменить данную ссылку или попрпавить график.
И да, SSE намного проще в применении на обоих сторонах на беке и на фронте.
SSE + Java + WebFlux = энтерпрайз решение для отправки пушей