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 平台有四个用户事件

  1. 加入
  2. 离开
  3. 超时
  4. 状态变化

还有两个通道级事件:活动和非活动。有关详细信息,请参阅 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 将不再尝试将该特定事件发送到你的服务器。