Pusher не «прослушивает» события, инициированные клиентом - PullRequest
2 голосов
/ 01 апреля 2019

Я делаю проект с помощью Laravel и Pusher.

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

$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');
});

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

1 Ответ

1 голос
/ 01 апреля 2019

Помимо привязки к событию 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

...