Асинхронно отправлять запрос с сервера на интерфейс
Я создаю чат-бота через веб-интерфейс, который взаимодействует с большими API-интерфейсами платформы чата, такими как Slack. Это текущий рабочий процесс:
- Пользователь отправляет сообщение моему боту через Slack
- Мое веб-приложение (Python Flask) получает HTTP-запрос от серверов Slack с идентификатором пользователя.
- Событие добавляется в очередь, и мое веб-приложение просто отправляет обратно 200 кодов состояния
- Работник создается для обработки события. Рабочий заканчивает тем, что делает API-вызов Slack с идентификатором пользователя и отображаемым сообщением.
Эта система работает нормально. Тем не менее, теперь я хочу иметь свой собственный интерфейс чата, взаимодействующий с моим сервером. Как мне сделать так, чтобы мой интерфейс ждал уведомлений, отправленных моим сервером, и впоследствии отображал сообщение? Нужно ли полагаться на веб-сокет? Есть ли другие способы сделать это, о которых я не думал? Ясно, что мне нужно что-то, что постоянно поддерживает связь между клиентом и моими серверами, в отличие от вызовов API, которые не требуют постоянного соединения?
Дополнительной проблемой является тот факт, что мой сервер API и мои работники независимы. То есть, когда сервер API получает запрос, рабочий порождается независимо. Если бы я вообразил что-то, используя websocket, я полагаю, что мой работник должен будет отправить запрос на мой сервер API, который затем отправит контент через websocket клиенту. Мне интересно, кажется ли это правильным или просто абсурдным.