@Keril11

Как динамически отправлять данные на клиент с golang сервера?

Есть задача обновлять данные по времени на сервере и автоматически отправлять их на клиент, не используя крон и шедулер. Был вариант с реализацией этого через rabbit + webhook, но кажется какой то странной. Подскажите еще варианты решения этой проблемы?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
Eugene-Usachev
@Eugene-Usachev
Способов много. Можно использовать или SSE, или http2, или long Polling, или short Polling или Websockets. Причём последний вариант самый предпочтительный почти всегда, так как является очень популярным и шустрым. Замеры я не проводил, но на бумаге протокол Websockets имеет наименьший оверхед из всех способов. Реализаций Websocket очень много для Go.

Если проект маленький, берите Gorilla-websocket, или fiber-websocket или fasthttp-websocket (зависит от того, какую библиотеку вы используете). Эти технологии очень простые и удовлетворяют почти всем требованиям. В крупных проектах я бы предложил использовать или centrifuge, или centrifugo. centrifuge - это хорошо оптимизированная библиотека, а centrifugo - готовое решение. Они посложнее, но уже оптимизированы и предоставляют fallbacks, если клиент не способен установить websocket.

Если у вас есть специфичные требования, вам следует указать это, потому что сейчас приходится "тыкать в небо".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы