Webhook Overview
WebHook是HTTP回调:发生某些事情时发生的HTTP POST;通过HTTP POST进行简单的事件通知。当发生某些情况时,实现WebHooks的Web应用程序会将消息发布到URL。
PubNub Presence
Pubnub状态与pubnub平台上的用户状态有关。当用户加入,离开频道或用户状态发生变化时,它会提供用户在场的信息。在线状态Webhooks为您的服务器提供了一种在密钥的任何通道上发生在线状态事件时都会通知您的服务器的方法。这为您的服务器端应用程序提供了易于扩展的解决方案,以监视状态事件。
How it would reduce the overhead
没有Presence Webhooks,您的服务器将必须订阅所有通道的-pnpres通道。因此,如果您的应用程序具有成千上万个频道或更多频道,这可能是一项繁琐的任务,无法控制多余频道。
在这种情况下,Pubnub Webhooks将为我们提供帮助,并且使用传统的知名Web站点更容易实现和扩展 infrastructure(load balancers, web and app servers provided by your application service providers like Heroku, Rackspace, Azure, Amazon and others)。
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
重要的是,您的REST端点实现应在从PubNub收到Webhook后立即返回状态代码(200 OK)。
Pubnub Re-try
如果pubnub没有从Rest-Endpoint接收到200,则它将发送重复的事件,因为PubNub假定没有响应,则意味着您的服务器未接收到该事件。PubNub将在等待200秒响应之前等待五秒钟,然后重试。第三次重试(总共尝试四次)后,PubNub将不再尝试将该特定事件发送到您的服务器。