php-使用pusher将所有消息保存在我的服务器上

我正在开发一个聊天室,该聊天室目前可用于连续服务器请求,并且浪费资源.

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

我可能已经在this thread中找到了我的问题的答案(月光回复)

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

解决方法:

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

>客户->您的服务器->推送器HTTP API->所有客户
>客户-> Pusher WebSocket API->所有客户

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

在方案2中,您可以设置client event WebHooks.使用这些消息路由为:

客户-> Pusher WebSocket API->所有客户Web挂钩->您的服务器

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

如何设置Pusher WebHook

您可以在信息中心内为Pusher App设置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-电报API,获取发件人的电话号码?


下一篇:大气响应,广播不调用javascript onMessage处理程序