Pusher不会“监听”客户端触发的事件

时间:2019-04-01 10:44:31

标签: javascript laravel pusher real-time-updates

我正在使用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 个答案:

答案 0 :(得分: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