我正在开发一个聊天室,该聊天室目前可用于连续服务器请求,并且浪费资源.
因此,我想利用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并遵守安全准则.