Бэкэнд не может волшебным образом отправлять обновления в пользовательский интерфейс клиента. Бэкэнд не будет иметь возможности узнать, где существует пользовательский интерфейс (то есть, каков IP-адрес пользовательского интерфейса), и даже если он это сделал, он может не иметь доступа для установления соединения (из-за брандмауэров или NAT).
По этой причине клиентский интерфейс должен запрашивать обновления. Один из способов сделать это - использовать таймер в приложении пользовательского интерфейса, который запрашивает обновления через REST. Но это, по сути, то, что делают веб-сокеты - с гораздо меньшими накладными расходами.
Так работают обычные приложения, которые вы используете каждый день. Так что я не уверен, почему вы не хотите идти по маршруту websockets.
...
Начиная с Spring 5.0.5.RELEASE, нет необходимости выполнять какие-либо настройки из-за улучшения аннотации @SendToUser, которая позволяет нам отправлять сообщение адресату пользователя через «/ user / {sessionId} / … », А не« /user/ndomusercasts/… Серв.
»
Это означает, что аннотация работает, основываясь на идентификаторе сеанса входящего сообщения, фактически отправляя ответ частному получателю на сеанс:
...
Вот хороший пример:
https://www.baeldung.com/spring-websockets-sendtouser