pusher api:如何检查连接是否已建立?

时间:2015-03-16 06:00:52

标签: javascript pusher

我正在使用推送器界面,我想为推送器服务不可用的环境编写回退。我找不到检查推送器订阅是否正常的方法。

我试过这个

$scope.channel.bind('pusher:error', function() {
        console.log("pusher:error");
    });

并且还推送:subscription_error但它什么也没做。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:8)

重点突出连接订阅之间的区别。

  • 连接是与Pusher的持久连接,通过该连接进行所有通信。
  • 订阅是对数据的请求。在Pusher中,这些由频道表示。订阅和关联数据使用已建立的连接,多个订阅通过单个连接进行多路复用。

要确定是否可以访问Pusher服务,您应该检查连接状态。

但是,如果你看到这个,我也建议你联系Pusher support,因为这不应该发生。

检测&查询连接状态

可以通过绑定到连接对象上的事件来检测连接状态。

pusher.connection.bind('state_change', function(states) {
  var prevState = states.previous;
  var currState = states.current;
});

您现在可以额外获得州。

var currentState = pusher.connection.state;

有关此内容的完整文档可在此处找到: https://pusher.com/docs/client_api_guide/client_connect#connection-states

问题中的示例似乎使用Angular,因此您需要从connection引用$scope对象。如果您使用的是pusher-angular,那么API应该与普通的Pusher库相同。

订阅状态

您可以绑定到两个事件以确定订阅的结果:

  • pusher:subscription_succeeded
  • pusher:subscription_error

使用这些代码的代码如下:

var channel = pusher.subscribe('my-channel');

channel.bind('pusher:subscription_succeeded', function() {
  // Yipee!!
});

channel.bind('pusher:subscription_error', function() {
  // Oh nooooos!
});

有关成功事件的文档可在此处找到: https://pusher.com/docs/client_api_guide/client_events#subscription_succeeded

有关错误事件的文档可在此处找到: https://pusher.com/docs/client_api_guide/client_events#subscription_error