Как заставить серверный API сообщать клиентскому API, что доступно обновление
У меня есть клиентский API оставшегося доступа к данным через /read
конечная точка с моего сервера. Тем не менее, у меня есть internal batch service
который вызывает мой сервер /write
конечная точка, которая обновляет данные. Поэтому время от времени данные с сервера обновляются. Как я скажу клиенту, что данные обновлены, и попросить его позвонить /read
конечная точка снова, чтобы получить последние данные?
Ниже приведена диаграмма высокого уровня по сценарию.
2 ответа
Попробуйте изучать веб-хук? По сути, клиент будет "подписываться" на ваш webhook, или, чтобы упростить его, клиент предоставит конечную точку серверу. Всякий раз, когда есть обновление, ваш сервер просто отправляет запрос клиенту. Клиент должен просто вызвать сервис, который всякий раз, когда он получает запрос от webhook, выбирает read
,
Это в основном идет так
- Клиент подписывается на сервер
- Клиент дает серверу конечную точку
/updateAvailable
- Когда происходит обновление, сервер отправляет запрос конечной точке клиента
/updateAvailable
- "/updateAvailable" вызывает службу, которая вызывает "/ чтение"
Конечная точка /updateAvailable может вызывать службу, которая обновляет содержимое. Допустим, отправленный запрос имеет параметр
{
"updateFound":true
}
Поэтому, когда клиент вызывает /updateAvailable и получает запрос, вы делаете что-то вроде этого (псевдокод)
if (updateBody.updateFound.message=true)
then call read()
редактировать
Создав конечную точку для клиента, вы также можете выполнять автоматические обновления. Так что у клиента есть /updateAvailable
конечная точка. Сервер отправляет обновление /updateAvailable
конечная точка, которая со стороны клиента вызывает любой сервис, используемый для /read
Есть два решения для вашего вопроса:
Использование таймера на клиенте restful для запроса к серверу restful каждые N секунд / минут... Однако это действительно плохая идея, потому что он должен запрашивать сервер много раз, даже если обновленные данные отсутствуют.
Использование сторонних решений протокола обмена сообщениями на основе публикации и подписки для реализации функции push-уведомлений при каждом обновлении новых данных. Эти решения: Google FCM,MQTT,AMQP