我正在开发一个聊天功能,目前可以处理连续的服务器请求,这会导致资源浪费。
所以我想利用 pusher 提供的服务平台。问题是我需要将客户端交换的每条消息保存在我的数据库中。据我所知,推送器仅使用服务器端进行 channel 认证和向客户端转发消息,而客户端之间的通信不通过我的服务器。
我可能已经在 this thread 中找到了问题的答案(月光 react )
除了我不知道如何实现类似的东西......一些帮助?
最佳答案
您可以通过以下两种方式之一触发聊天消息事件:
- 客户端 -> 你的服务器 -> Pusher HTTP API -> 所有客户端
- 客户端 -> Pusher WebSocket API -> 所有客户端
在场景 1 中,消息通过您自己的服务器传输,因此您可以轻松地将它们存储在数据库中。
在方案 2 中,您可以设置 client event WebHooks .使用这些消息路由是:
客户端 -> Pusher WebSocket API -> 所有客户端 && WebHook -> 你的服务器
然后,当客户端事件消息通过 WebHook 到达时,您可以将它们存储在数据库中。
如何设置 Pusher WebHook
您在仪表板中为您的 Pusher 应用程序设置了一个 WebHook。
只需为应用选择 WebHooks 设置。
使用您自己的应用程序上的端点作为 URL 创建一个新的“客户端事件”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并遵循安全准则。
关于php - 使用推送器将所有消息保存在我的服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120347/