В настоящее время мы реализуем простое чат-приложение, которое позволяет пользователям создавать разговоры и обмениваться сообщениями.Приложение для веб-чата - как правильно сохранить данные?
Наша основная установка включает в себя AngularJS на передней панели и концентраторе SignalR на задней панели. Вот как это работает:
- Client приложение открывает соединение WebSockets нашей услуги реального времени (на основе SignalR) и поддерживает чат обновления
- Пользователь начинает отправлять сообщения. Для каждого нового сообщения клиентское приложение вызывает HTTP API для его отправки.
- API хранит сообщение в базе данных и уведомляет нашу службу в режиме реального времени о том, что есть новое сообщение.
- Служба в режиме реального времени передает сообщение через веб-узлы подписанные Клиенты
Однако мы заметили, что открытие большого количества HTTP-соединений для каждого нового сообщения может быть не очень хорошей идеей, поэтому нам было интересно, следует ли использовать Websockets для отправки и получения сообщений?
Новая установка будет выглядеть следующим образом:
- Client приложение открывает соединение с WebSockets в режиме реального времени службы
- Пользователь начинает отправку сообщений. Приложение-клиент пересылает сообщения в службу реального времени с помощью Websockets
- Служба в режиме реального времени получает сообщение, уведомляет о нашей службе сохранения, которую он должен сохранить, а затем доставляет сообщение другим подписчикам.
- Служба сохранения сохраняет сообщение
Какие из этих параметров более типичны при настройке эффективной и эффективной чат-системы? Благодаря!
SignalR создан для двунаправленной связи; почему ** не ** использовать открытое соединение WebSocket вместо создания другого HTTP-запроса? – wgraham