1. Канал для конкретных данных. например каналы:
- личные сообщения (диалоги)
- оповещения
2. Канал для конкретного диалога:
Broadcast::channel('chat.{roomId}', function ($user, $roomId) {
if ($user->canJoinRoom($roomId)) { // Проверяем, разрешено ли пользователю входить в этот чат
return ['id' => $user->id, 'name' => $user->name]; // Если да, возвращаем результат
}
});
Echo.join(`chat.${roomId}`)
.here((users) => {
console.log("В этой комнате: ", users);
})
.joining((user) => {
console.log("К нам присоединился: ", user.name);
})
.leaving((user) => {
console.log("Ушел от нас: ", user.name);
});
Подробнее:
https://laravel.com/docs/5.5/broadcasting#authoriz...
UPD: Можно также использовать приватные каналы:
return new PrivateChannel('chat.' . $chatId);
Broadcast::channel('chat.{chatId}', function ($user, $chatId) {
return $user->hasChat($chatId); // Проверяем состоит ли пользователь в чате
});
Echo.private(`chat.${chatId}`)
.here((users) => {
console.log("В этой комнате: ", users);
})
.joining((user) => {
console.log("К нам присоединился: ", user.name);
})
.leaving((user) => {
console.log("Ушел от нас: ", user.name);
});