使用推送器将所有消息保存在我的服务器上
Using pusher to save all the message on my server
我正在开发一个聊天功能,目前可以处理持续的服务器请求,这会导致资源浪费。
所以我想利用 pusher 平台提供的服务。问题是我需要将客户端交换的每条消息保存在我的数据库中。据我所知,pusher 仅使用服务器端进行通道认证和向客户端转发消息,而客户端之间的通信不通过我的服务器。
我可能已经在 this thread(月光回复)
中找到了我的问题的答案
除了我不知道如何实现类似的东西...有帮助吗?
您是否考虑过像 Firebase or Realtime Storage 这样使用具有数据同步功能的云数据库?当数据在单个 API.
中为 updated/inserted 时,您将获得持久的消息持久性和实时通信
您可以通过以下两种方式之一触发聊天消息事件:
- 客户端 -> 你的服务器 -> Pusher HTTP API -> 所有客户端
- 客户端 -> 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 并遵守安全准则。
我正在开发一个聊天功能,目前可以处理持续的服务器请求,这会导致资源浪费。
所以我想利用 pusher 平台提供的服务。问题是我需要将客户端交换的每条消息保存在我的数据库中。据我所知,pusher 仅使用服务器端进行通道认证和向客户端转发消息,而客户端之间的通信不通过我的服务器。
我可能已经在 this thread(月光回复)
中找到了我的问题的答案除了我不知道如何实现类似的东西...有帮助吗?
您是否考虑过像 Firebase or Realtime Storage 这样使用具有数据同步功能的云数据库?当数据在单个 API.
中为 updated/inserted 时,您将获得持久的消息持久性和实时通信您可以通过以下两种方式之一触发聊天消息事件:
- 客户端 -> 你的服务器 -> Pusher HTTP API -> 所有客户端
- 客户端 -> 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 并遵守安全准则。