Pusher 不是从客户端触发的 "listening" 事件

Pusher is not "listening" events triggered from client

我正在用 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');
});

但我从来没有收到警报。

除了绑定到 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