我正在使用推送器界面,我想为推送器服务不可用的环境编写回退。我找不到检查推送器订阅是否正常的方法。
我试过这个
$scope.channel.bind('pusher:error', function() {
console.log("pusher:error");
});
并且还推送:subscription_error但它什么也没做。
任何帮助将不胜感激。
答案 0 :(得分:8)
重点突出连接与订阅之间的区别。
要确定是否可以访问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