Процесс подписки и отмены подписки Pusher

У меня проблема с подпиской / отказом от подписки 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"}}}

person Jacob Powers    schedule 19.06.2015    source источник


Ответы (1)


Pusher: Ошибка: {"type": "WebSocketError", "error": {"type": "PusherError", "data": {"code": null, "message": "Существующая подписка на группу присутствия канала- 1 "}}}

Сообщение сообщает вам, что - что касается службы Pusher - этот конкретный клиент, обозначенный socket_id, уже подписан на канал presence-group-1. С точки зрения клиента, об этой ошибке обычно не стоит беспокоиться.

Однако, если пользователь быстро подписывается / отказывается от подписки, перемещаясь по маршрутам, для полной уверенности стоит получить дополнительную информацию. Из предоставленного кода и описания невозможно определить, связана ли проблема со службой Pusher или с клиентским приложением.

Предоставление вывода ведения журнала библиотеки JavaScript Pusher предоставит более подробную информацию, которая может помочь определить причину.

person leggetter    schedule 22.06.2015