2015-06-19 98 views
1

我得到一個相當簡單的聊天應用程序與存在組推送訂閱/取消訂閱問題。在給定的時間應該有兩個訂閱頻道。在骨幹路由之間導航時,用戶在頻道之間切換,因此沒有硬重新載入頁面。推送者訂閱和取消訂閱過程

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"}}} 

回答

0

Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Existing subscription to channel presence-group-1"}}}

該消息告訴您 - 就推送服務而言 - 由socket_id標識的此特定客戶已訂閱了presence-group-1頻道。從客戶的角度來看,這個錯誤通常是不是你真正需要擔心的。

但是,如果用戶正在通過導航路線快速訂閱/取消訂閱,那麼值得獲取更多信息以便完全確定。從提供的代碼和說明中,無法確定問題是否在Pusher服務或客戶端應用程序中。

提供Pusher JavaScript library logging的輸出將提供更多詳細信息,以幫助確定原因。