pubnub webhook
Webhook Overview
WebHook 是一个 HTTP 回调:发生某些事情时发生的 HTTP POST; 通过 HTTP POST 进行简单的事件通知。实现 WebHooks 的 Web 应用程序会在发生某些事情时将消息发布到 URL。
PubNub Presence
Pubnub 存在所有关于 pubnub 平台上的用户存在。它在用户加入,离开频道或用户状态发生变化时提供用户。Presence Webhooks 为你的服务器提供了一种方法,可以在你的密钥的任何通道上发生状态事件时收到通知。这为你的服务器端应用程序提供了一个易于扩展的解决方案,以监控状态事件。
How it would reduce the overhead
如果没有 Presence Webhooks,你的服务器必须订阅所有频道的 -pnpres 频道。因此,如果你的应用拥有数千个频道或更多频道,那么控制过度频道可能是一项繁琐的工作。
Pubnub Webhooks 将在这种情况下帮助我们,并且使用传统的,众所周知的 Web 基础架构(由 Heroku,Rackspace,Azure,Amazon 等应用程序服务提供商提供的负载平衡器,Web 和应用程序服务器)更容易实现和扩展。
PubNub Presence Webhooks
PubNub Presence Webhooks 是 PubNub 网络在发生状态事件时直接调用服务器的 REST 端点的一种方法。它还有助于负载平衡。因此,你需要在服务器上创建 REST 端点 URL,pubnub 将在该 URL 上发送状态数据。
User Presence Events
pubnunb 平台有四个用户事件
- 加入
- 离开
- 超时
- 状态变化
还有两个通道级事件:活动和非活动。有关详细信息,请参阅 pubnub-doc。
每个事件都有自己的 Webhook,你可以为服务器提供 REST 端点来处理事件。或者,你可以为所有这些端点提供一个 REST 端点,只需在服务器上的 action 属性上实现条件逻辑即可处理每个单独的事件。
无论你选择什么,你都需要向 PubNub 支持提供子密钥和 REST URI 以便为你配置。对于不同的服务器环境(例如,开发,测试,生产),你可能会有多个具有不同端点的子密钥。
一旦实现了服务器的 REST 端点并且 PubNub 密钥配置到位,你就可以开始了。但在实现 REST 端点之前,了解事件的数据可能会有所帮助。
以下是联接的示例:
HTTP POST
Content-Type: application/json
{
'action': 'join',
'sub_key': 'sub-c-...',
'channel': 'lacrosse'
'uuid': '1234-5678-90ab-cdef',
'timestamp': 1440568311,
'occupancy': 1,
'data': {'foo': 'bar'}
}
当然,除了动作值之外,离开和超时以及状态改变都是一样的。
Webhook Response Status
在从 PubNub 接收 Webhook 后,你的 REST 端点实现应立即返回状态代码(200 OK),这一点非常重要。
Pubnub Re-try
如果 pubnub 没有从 Rest-Endpoint 收到 200,那么它将发送重复事件,因为 PubNub 假定没有响应意味着你的服务器没有收到该事件。在再次尝试之前,PubNub 将等待五秒钟以获得 200 响应。在第三次重试(总共四次尝试)之后,PubNub 将不再尝试将该特定事件发送到你的服务器。