【问题标题】:pusher api: how can I check if the connection is established?pusher api:如何检查连接是否建立?
【发布时间】:2015-03-16 06:00:51
【问题描述】:

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

我试过了

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

还有 pusher:subscription_error 但它什么也没做。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript pusher


    【解决方案1】:

    强调连接订阅之间的区别很重要。

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

    要确定 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,因此您需要从 $scope 获取对 connection 对象的引用。如果您使用的是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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 2020-03-31
      • 2015-11-30
      • 2016-09-10
      • 2013-03-11
      相关资源
      最近更新 更多