使用推送器将所有消息保存在我的服务器上

Using pusher to save all the message on my server

我正在开发一个聊天功能,目前可以处理持续的服务器请求,这会导致资源浪费。

所以我想利用 pusher 平台提供的服务。问题是我需要将客户端交换的每条消息保存在我的数据库中。据我所知,pusher 仅使用服务器端进行通道认证和向客户端转发消息,而客户端之间的通信不通过我的服务器。

我可能已经在 this thread(月光回复)

中找到了我的问题的答案

除了我不知道如何实现类似的东西...有帮助吗?

您是否考虑过像 Firebase or Realtime Storage 这样使用具有数据同步功能的云数据库?当数据在单个 API.

中为 updated/inserted 时,您将获得持久的消息持久性和实时通信

您可以通过以下两种方式之一触发聊天消息事件:

  1. 客户端 -> 你的服务器 -> Pusher HTTP API -> 所有客户端
  2. 客户端 -> Pusher WebSocket API -> 所有客户端

在方案 1 中,消息通过您自己的服务器传送,因此您可以轻松地将它们存储在数据库中。

场景2可以设置client event WebHooks。使用这些消息路由是:

Client -> Pusher WebSocket API -> All Clients && WebHook -> You Server

然后,当客户端事件消息通过 WebHook 到达时,您可以将它们存储在您的数据库中。

如何设置 Pusher WebHook

您在仪表板中为您的 Pusher 应用程序设置了 WebHook。

只需为应用选择 WebHooks 设置。

使用您自己的应用程序上的端点作为 URL:

创建一个新的 "client event" WebHook

将创建 WebHook,因此只要为此应用程序触发客户端事件,就会命中该端点。

使用 Pusher WebHook

您定义的 URL 的 POST 请求格式为:

{
  "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 docs 并遵守安全准则。