Я использую канал присутствия, чтобы получить количество участников LIVE в прямой трансляции и отобразить этот #, а также имена и фамилии пользователей на странице. Проблема в том, что участники мероприятия никак не аутентифицируются. Я нашел ответ здесь, на StackOverflow, с помощью этого кода, который представляет собой своего рода способ обойти традиционную аутентификацию.
Код: Выделить всё
Route::post('/my/custom/broadcast/auth/route', function () {
$user = new GenericUser(['id' => microtime()]);
request()->setUserResolver(function () use ($user) {
return $user;
});
return Broadcast::auth(request());
});
Broadcast::channel('my-room-name', function ($user) {
return [
'id' => $user->id,
];
});
Все работает, я подделал аутентификацию пользователя, могу присоединиться к каналу и все. Проблема сейчас в том, что мне нужны реальные данные участников LIVE. У меня есть идентификатор участника, сохраненный в переменной сеанса Laravel, и у меня есть данные каждого участника в таблице, назовем ее таблицей участников. Как я могу использовать этот идентификатор участника сеанса (или другим способом!) и передать его в собственный маршрут авторизации? Я попробовал защиту и промежуточное программное обеспечение, но не смог заставить его работать без упомянутого выше кода Hacky. Можно ли будет передавать данные из интерфейса в Echo? (См. эту ссылку):
https://laravel.com/docs/9.x/broadcasti ... on-request
В идеале то, что я хочу иметь в Channel.php это:
Код: Выделить всё
Broadcast::channel('my-room-name', function ($user) {
return [
'id' => $user->registrant_id,
'first_name' => $user->first_name,
'last_name' => $user->last_name,
];
});
Как это сделать??
Подробнее здесь:
https://stackoverflow.com/questions/791 ... ssion-data