Когда мне следует открывать и закрывать соединения через веб-сокет для чата внутри другого приложения? - PullRequest
1 голос
/ 18 мая 2019

Я использую Serverless, AWS API Gateway и AWS Lambda, чтобы пытаться отправлять сообщения в режиме реального времени, и я нашел несколько примеров, подтверждающих эту концепцию. У меня возникают проблемы, связанные с тем, где в моем приложении должны открываться соединения WebSocket.

Я создал GraphQL API и многостраничный продукт, и я хотел бы встроить в него приложение чата в реальном времени на всех страницах, аналогично вашему Facebook, WhatsApp или чему-то еще. Я реализовал мутации и запросы GraphQL, чтобы создать потоки, в которых будут находиться пользователи и сообщения, и у них есть свои собственные мутации и запросы, а также у меня настроено 4 лямбда-функции. Один для сервера GraphQL, и для WebSockets у меня есть open, close и sendMessage.

Я думал об открытии соединения WebSocket всякий раз, когда запускается сервер GraphQL, но потом я чувствую, что это будет поддерживать Lambda до тех пор, пока соединение не закроется, что, я думаю, противоречит философии и передовым методикам Serverless в том смысле, что функция Lambda пришлось бы ждать, пока соединение WebSocket не закроется, чтобы лямбда завершила свое выполнение. Но в то же время мне хочется, чтобы приложение чата в реальном времени работало над другим приложением на всех страницах. Есть ли какие-либо другие варианты в бэк-энде, где я мог бы открыть соединение?

Другой вариант - подключить его на внешней стороне?

...