Использование pusher для сохранения всех сообщений на моем сервере

Я разрабатываю чат, который в настоящее время работает с непрерывными запросами к серверу, что приводит к пустой трате ресурсов.

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

Я, наверное, уже нашел ответ на свой вопрос в эта тема (Лунный ответ)

кроме того, что я понятия не имею, как реализовать что-то подобное … некоторую помощь?

3

Решение

Вы можете инициировать события сообщений чата одним из двух способов:

  1. Клиент -> Ваш сервер -> Pusher HTTP API -> Все клиенты
  2. Клиент -> Pusher WebSocket API -> Все клиенты

В сценарии 1 сообщения проходят через ваш собственный сервер, поэтому вы можете легко сохранить их в базе данных.

В сценарии 2 вы можете настроить клиентское событие WebHooks. Используя их, маршрут сообщения:

Клиент -> Pusher WebSocket API -> Все клиенты && WebHook -> Ваш сервер

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

Как настроить Pusher WebHook

Вы устанавливаете WebHook для своего приложения Pusher на панели инструментов.

Просто выберите настройку WebHooks для приложения.

Настройка WebHook

Создайте новое «клиентское событие» WebHook, используя конечную точку в вашем собственном приложении в качестве URL:

Создать толкатель WebHook

WebHook будет создан, поэтому каждый раз, когда для этого приложения запускается событие клиента, эта конечная точка будет достигнута.

WebHook создан

Использование Pusher WebHook

Формат POST запрос на указанный вами URL будет:

{
"name": "client_event",
"channel": "name of the channel the event was published on",
"event": "name of the event",
"data": "data associated with the event",
"socket_id": "socket_id of the sending socket",
"user_id": "user_id associated with the sending socket" # Only for presence channels
}

Итак, вам нужно проанализировать тело запроса и получить необходимую информацию.

Пожалуйста, не забудьте прочитать Документы WebHook и следуйте инструкциям по безопасности.

3

Другие решения

Рассматривали ли вы использование облачной базы данных с синхронизацией данных, как Firebase или же Хранение в реальном времени? Вы получите долговременное сохранение сообщений и связь в реальном времени, когда данные обновляются / вставляются в единый API.

0

По вопросам рекламы [email protected]