gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:41:20 26 4
gpt4 key购买 nike

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

我正在使用状态 channel ,现在我想计算在线用户数,所以我正在尝试使用事件 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');
});

但我从来没有收到警报。

最佳答案

除了绑定(bind)到 pusher:subscription_succeeded 事件,您还应该绑定(bind)到 pusher:member_added 和 pusher:member_removed 事件。只有发起连接的用户会收到 susbscription_succeeded 事件。其他两个事件广播给所有连接的用户。

通过绑定(bind)到添加和删除的事件,您可以确定成员计数何时增加或减少。

您可以按如下方式检查:

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

关于javascript - Pusher 不是客户端触发的 "listening"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55453259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com