2026-02-26 12:02:00 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
use Illuminate\Support\Facades\Broadcast;
|
|
|
|
|
|
|
|
|
|
|
|
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
|
|
|
|
|
|
return (int) $user->id === (int) $id;
|
|
|
|
|
|
});
|
2026-02-26 13:35:38 +08:00
|
|
|
|
|
|
|
|
|
|
// 聊天室房间 Presence Channel 鉴权与成员信息抓取
|
|
|
|
|
|
Broadcast::channel('room.{roomId}', function ($user, $roomId) {
|
|
|
|
|
|
// 这里未来可以增加判断:比如该房间是否被锁定,或者该用户是否在此房间的黑名单中
|
|
|
|
|
|
// 凡是通过了这个判断的人(返回一个数组),他就会成功建立 WebSocket,
|
|
|
|
|
|
// 且他的这个数组信息会被 Reverb 推送给这个房间内的所有其他人 (joining / here 事件)。
|
|
|
|
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
|
'id' => $user->id,
|
|
|
|
|
|
'username' => $user->username,
|
|
|
|
|
|
'user_level' => $user->user_level,
|
|
|
|
|
|
'sex' => $user->sex,
|
|
|
|
|
|
'headface' => $user->headface,
|
|
|
|
|
|
// 这里可以视情况加入更多需要前端渲染在线人员列表的字段
|
|
|
|
|
|
];
|
|
|
|
|
|
});
|