Pusher не прослушивает события, инициированные клиентом

Я делаю проект с laravel и толкателем.

Когда я запускаю событие с сервера следующим образом:

$pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), array('cluster' => env('PUSHER_CLUSTER')));
$pusher->trigger('presence-chat', 'MessageSent', array('message' => 'mensaje enviado'));

Я могу слушать это с этим:

var channel = pusher.subscribe('presence-chat');
channel.bind('MessageSent', function(data) {
    comprobar_mensajes();
});

Я использую канал присутствия, и теперь я хочу подсчитать онлайн-пользователей, поэтому я пытаюсь использовать событие pusher:subscription_succeeded:

channel.bind('pusher:subscription_succeeded', function(members) {
  $('#count-users').text(members.count);
});

Когда вы загружаете страницу, счетчик работает правильно, но если другой пользователь подключается, счетчик предыдущего пользовательского интерфейса не обновляется. Я попытался вызвать дополнительное событие:

channel.bind('pusher:subscription_succeeded', function(members) {
  $('#count-users').text(members.count);
  channel.trigger('client-test',{ your: data });
});

channel.bind('client-test', function(data) {
    $('#count-users').text(members.count);
    alert('recibido');
});

Но я никогда не получаю оповещения.


person Juan Lopez    schedule 01.04.2019    source источник
comment
Увеличиваете ли вы количество участников, прежде чем отображать его пользователю?   -  person doydoy    schedule 01.04.2019
comment
Если я не ошибаюсь, мне не нужно этого делать. members.count всегда дает фактический размер участников. На самом деле при загрузке страницы он работает, но не обновляется в режиме реального времени.   -  person Juan Lopez    schedule 01.04.2019


Ответы (1)


Помимо привязки к событию pusher:subscription_succeeded, вы также должны привязаться к событиям pusher:member_added и pusher:member_removed. Только пользователь, инициирующий соединение, получает событие susbscription_succeeded. Два других события транслируются всем подключенным пользователям.

Путем привязки к добавленным и удаленным событиям вы можете определить, когда счетчики элементов были увеличены или уменьшены.

Вы можете проверить это следующим образом:

channel.bind('pusher:subscription_succeeded', function(members) {
  console.log(members.count);
});
channel.bind('pusher:member_added', function(member) {
  console.log(channel.members.count);
});

channel.bind('pusher:member_removed', function(member) {
  console.log(channel.members.count);
});

Полный справочник можно найти здесь: https://pusher.com/docs/client_api_guide/client_presence_channels#channel_members

person Chris C    schedule 01.04.2019