Spring Boot - Push-сообщение в угловой интерфейс - PullRequest
0 голосов
/ 11 июля 2019

Я хочу разработать приложение, в котором я хочу отправить сообщения (или данные) в пользовательский интерфейс из загрузочного приложения Spring.

У меня есть следующее требование -

  1. Рассмотриместь служба REST, которая принимает данные из других приложений с использованием метода POST.
  2. Эти данные будут переданы в пользовательский интерфейс.

ИЛИ

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

Для этого я наткнулся на компонент WebSocket, который мы можем использовать в приложении Spring Boot.

Однако есть ли какие-либо другие параметры, необходимые для того, чтобы можно было передавать входящие данные в пользовательский интерфейс?

Любая помощь приветствуется.

Спасибо,

Авинаш Дешмукх

1 Ответ

2 голосов
/ 11 июля 2019

Бэкэнд не может волшебным образом отправлять обновления в пользовательский интерфейс клиента. Бэкэнд не будет иметь возможности узнать, где существует пользовательский интерфейс (то есть, каков IP-адрес пользовательского интерфейса), и даже если он это сделал, он может не иметь доступа для установления соединения (из-за брандмауэров или NAT).

По этой причине клиентский интерфейс должен запрашивать обновления. Один из способов сделать это - использовать таймер в приложении пользовательского интерфейса, который запрашивает обновления через REST. Но это, по сути, то, что делают веб-сокеты - с гораздо меньшими накладными расходами.

Так работают обычные приложения, которые вы используете каждый день. Так что я не уверен, почему вы не хотите идти по маршруту websockets.

...

Начиная с Spring 5.0.5.RELEASE, нет необходимости выполнять какие-либо настройки из-за улучшения аннотации @SendToUser, которая позволяет нам отправлять сообщение адресату пользователя через «/ user / {sessionId} / … », А не« /user/ndomusercasts/… Серв.

»

Это означает, что аннотация работает, основываясь на идентификаторе сеанса входящего сообщения, фактически отправляя ответ частному получателю на сеанс:

...

Вот хороший пример:

https://www.baeldung.com/spring-websockets-sendtouser

...