Как сделать уведомление на сайте для всех пользователей?
Всем привет! Кто может подсказать бесплатное решение для вывода уведомлений для всех пользователей сайта.
Я вижу решение на подобии месенджа, как в вконтакте. Например пользователь зашел на сайт - получил какое-то уведомление о важной новости
или уведомление, предупреждающее о технических работах, которые начнутся через пол часа.
На forntend используются обычные странички, написанные на jquery.
На backend используется: java, liferay(который скоро будет заменен на spring boot) и сам spring mvc
какую библиотеку посоветуете использовать на frontend для того, чтобы "слушать" обновления?
будет ли достаточно делать запрос на сервер, например, раз в минуту?
s, на фронте достаточно простого javascript/fetch, и может быть promises, если хотим асинхронности https://learn.javascript.ru/fetch (это и для SSE и для LongPool).
Для WS есть куча оберток, но можно и напрямую - https://learn.javascript.ru/websocket . В современном JS все достаточно удобно.
Касательно отличия опроса, от "длинного опроса". Опрос - это когда делаем постоянные запросы на сервер и тут-же получаем ответ. Это хреново, жрет кучу ресерсов и генерирует кучу трафика.
Long pooling - это когда подключились к серверу и сервер не дает ответа, до тех пор, пока у него что-то не перещелкнет (например не появится событие для конкретного клиента), тогда сервер генерирует ответ и закрывает соединение. Клиент заново подключается к серверу. На стороне сервера нужно просто иметь какой нибудь Hashtable для хранения открытых запросов - https://russianblogs.com/article/92601645700/
Для SSE - тоже нужен отдельный сервлет, но переподключаться к серверу не нужно, на стороне клиента можно использовать EventSource - https://learn.javascript.ru/server-sent-events (или тот-же fetch)
Я за SSE или LongPooling, но нужно обязательно на стороне сервера увеличить одновременное количество коннектов!, ибо каждый клиент будет держать открытое соединение).
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.