Ответы пользователя по тегу WebSocket
  • Как правильнее построить архитектуру приложения на Laravel + Broadcasting?

    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);
        });
    Ответ написан
    1 комментарий