Java SPRING REST Как сделать динамическое обновление данных у клиента

Делал десктопный мессенджер на JavaFX, использовал самописный сервер. Обновление таблицы онлайн пользователей происходило так:

Пользователь подключился->сервер создает поток обновления->всем подключенным клиентам рассылаются обновления.

Как это реализовать в RESTful приложении? Разница в том, что в первом варианте я хранил все сессии клиентов в отдельном ассоциативном массиве, но рест сервер не хранит состояние сессии, насколько я понимаю...


Ответы (2 шт):

Автор решения: Roman Konoval

Вы правильно понимаете, что в RESTful подходе сервер не хранит состояние сессии. То есть он не хранит информацию специфическую для конкретного клиента.

Примером такой информации для вашего приложения может быть то, какие сообщения от других пользователей данный пользователь уже прочитал. Это должно храниться на клиенте и он сам должен управлять этим состоянием приложения и запрашивать у сервера то, что ему нужно.

Информация же о всех подключенных клиентах не является состоянием сессии так как не является специфической для одного клиента, а является ресурсом (или скорее ресурсами) к которым ваше API дает доступ.

→ Ссылка
Автор решения: ferZ

Итак, посредством самого REST api я не смог решить эту задачу. Вышел из положения следующим образом:

  1. Запустил RabbitMQ сервер
  2. На каждого пользователя завожу новую очередь
  3. Создаю RabbitListener у пользователей
  4. Вуаля! Раскидываю инфу о подключившемся/отключившемся клиенте по всем очередям онлайн-пользователей.
→ Ссылка