如何解决使用Livewire和Echo在Laravel中捕捉事件
我使用Laravel,Livewire,Laravel回声包和推送程序进行了laravel聊天测试。
我有一个主会议室,其中列出了不同的会议室,用户可以移到每个会议室与他人聊天。在每个不同的房间中,我都有连接的用户列表。
一切顺利。
因此,现在,我想在主会议室中显示相同的用户列表,并且如果其中一个移至另一个会议室,以显示该用户仍在连接以及他所移动的会议室的名称。
为此,我创建了一个“ userConnected”事件:
class userConnected implements ShouldBroadcast
{
use Dispatchable,InteractsWithSockets,SerializesModels;
public $room;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Room $room,$user)
{
$this->room = $room;
$this->user = $user;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('rooms');
}
}
然后,当用户加入房间时,我调度该事件:
public function joining($user)
{
if(! in_array($this->users,$user)) {
$this->users[] = $user;
// envoyer evenement : room
$this->emit('newConnection');
broadcast(new userConnected($this->room,$user))->toOthers();
}
}
然后,在我的livewire房间控制器中,我听这样的事件:
protected function getListeners()
{
return [
"echo-presence:rooms,here" =>'here',"echo-presence:rooms,joining" =>'joining',leaving" =>'leaving','newConnection' => 'newConnection',"echo-private:rooms,userConnected" => 'newConnection',];
}
我的方法:
public function newConnection()
{
$this->stillConnected = true;
}
当然还有我的channels.php文件:
Broadcast::channel('connected',function ($users) {
return $users;
});
我的问题是:现在,如何在房间的主直播控制器中捕获事件?
因为它们什么也没有发生...
我的变量:
$stillConnected
保持虚假... 也许我做错了...
如果有人有主意...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。