Laravel трансляция канала присутствия с использованием толкателя, неспособного передать параметры - PullRequest
0 голосов
/ 26 февраля 2020

Шаг за шагом я следовал за документацией на https://laravel.com/docs/6.x/broadcasting и проверял, копирую и вставляю, чтобы быть уверенным, что я не ошибаюсь. Я могу нормально вещать, и все работает просто отлично. Поскольку я не могу передать атрибуты, люди в другой комнате считаются так, как будто они все в одной комнате. Вот живой пример: https://prayershub.com/worship/82 - 82 - вероисповедание, которому я хотел бы перейти:

Broadcast::channel('worship_presence_channel.{id}', function ($id) {
if(Auth()->check())
{
    $profile = Auth()->user()->Profile;

    $user = Auth()->user();

    $data = [
        'id' => $user->id,
        'name' => $user->name,
        'username' => $user->username,
        'avatar' => config('app.storage').$profile->profile_image,
        'url' => $profile->profile_url,
        'favorite_bible_verse' => $profile->favorite_bible_verse
    ];

    return $id;
}

});

От:

Echo.join(`worship_presence_channel.${id}`)
    .here((users) => {            
        worshipers=users;
        joinUser(worshipers);
        $('.group-count').html(worshipers.length);
        console.log(users);
    })
    .joining((user) => {
        worshipers.push(user);
        popupNewUser(user);
        joinUser(worshipers);
        $('.group-count').html(worshipers.length);
    })
    .leaving((user) => {
        worshipers = worshipers.filter(function(obj) {
            return (obj.id !== user.id);
        });
        popupLeaveUser(user);
        joinUser(worshipers);
        $('.group-count').html(worshipers.length);
    });

У меня также есть событие, которое кажется бесполезным, но выглядит так:

public function broadcastOn()
{
    return new PresenceChannel('worship_presence_channel.58');
}

public function broadcastAs()
{
    return 'worship_presence_channel.58';
}

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно, или если я все понял просто неправильно. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 26 февраля 2020

Я понял, я изменил коды эха выше на это:

Broadcast::channel('worship_presence_channel.{id}', function ($user, $id) {
if(Auth()->check())
{
    $profile = $user->Profile;

    $data = [
        'id' => $user->id,
        'name' => $user->name,
        'username' => $user->username,
        'avatar' => config('app.storage').$profile->profile_image,
        'url' => $profile->profile_url,
        'favorite_bible_verse' => $profile->favorite_bible_verse,
        'worships_id' => $id
    ];

    return $data;
}

});

Я передаю 2 параметра $ user, $ id и это работает так же, как do c сказал, что это будет !!!

...