我正在使用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');
});
但是我从来没有收到警报。
答案 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