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

NiR*_*iRR 0 javascript pusher

我正在使用推送器界面,我想为推送器服务不可用的环境编写一个后备.我找不到一种方法来检查推送器订阅是否正常.

我试过这个

$scope.channel.bind('pusher:error', function() {
        console.log("pusher:error");
    });
Run Code Online (Sandbox Code Playgroud)

还有推送器:subscription_error但它什么也没做.

任何帮助将不胜感激.

leg*_*ter 9

突出连接订阅之间的区别非常重要.

  • 一个连接是推的持久连接在其上的所有通信发生.
  • 订阅是对数据的请求.在Pusher中,这些由通道表示.订阅和关联数据使用已建立的连接,并且多个订阅通过单个连接进行多路复用.

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

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

检测和查询连接状态

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

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

您现在可以额外获得州.

var currentState = pusher.connection.state;
Run Code Online (Sandbox Code Playgroud)

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

问题中的示例似乎使用Angular,因此您需要从中获取connection对象的引用$scope.如果您使用的是推杆角度,那么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!
});
Run Code Online (Sandbox Code Playgroud)

有关成功事件的文档,请访问:https: //pusher.com/docs/client_api_guide/client_events#subscription_succeeded

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