【发布时间】:2015-06-19 18:03:24
【问题描述】:
我在一个相当简单的聊天应用程序上遇到了与在线组有关的 Pusher 订阅/取消订阅问题。在给定时间应该有两个订阅频道。用户在主干路由之间导航时会在通道之间切换,因此不会出现硬页面重新加载。
Pusher 似乎大部分时间都在工作,但我在频道订阅时遇到间歇性错误。
我写了两个加入频道的方法,如果一个已经被先前的路线加入,则取消订阅。我担心 Pusher 中发生的异步事件会破坏事情。
我的单频道推送相关代码:
window.pusher = new Pusher('<%= Pusher.key %>', {
authEndpoint: 'api/pusher/auth'
});
路线:
this.groupFeed = this._pusherSubscribeGroup(group_id);
this.groupFeed.bind('new_conversation', function(data) {
var newConv = new App.Models.Conversation(data);
this.group.conversations().add(newConv);
}.bind(this));
退订助手:
_pusherSubscribeGroup: function (group_id) {
if (this._groupChannelName) {
window.pusher.unsubscribe(this._groupChannelName);
}
this._groupChannelName = 'presence-group-' + group_id;
return window.pusher.subscribe(this._groupChannelName);
}
控制台错误:
Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Existing subscription to channel presence-group-1"}}}
【问题讨论】:
标签: javascript backbone.js websocket pusher