Трансляция эхо-событий Laravel с помощью pusher и vueJS не работает, как написано в документации

Привет, ребята, я действительно запутался, потому что я прочитал документы о том, как передавать значения в трансляции, делая это.

public function broadcastOn()
{
 return new PresenceChannel('room.'.$this->message->room_id);
}

и это дает мне ошибку авторизации, которая не авторизована. похоже, что параметр не читается в broadcastOn, вместо этого он читается в Echo.join, потому что, когда я это делаю, все работает нормально.

Echo.join('room.' + 1)
.listen('NewMessage', (e) => {
    //
});

Но я не хочу передавать 1 всем своим соединениям, мне нужно, чтобы оно было динамическим. Есть ли способ передать $ this-> message-> room_id в Echo.join? Если это поможет, вот мой файл channels.php

Broadcast::channel('room.{roomId}', function ($user, $roomId) {
   return //logic is here
});

Я пробовал то, что написано в документации, а именно

Echo.join('room.${roomId}')
    .here(...)
    .joining(...)
    .leaving(...)
    .listen('NewMessage', (e) => {
        //
    });

но это дает мне исключение из-за недопустимого имени канала. Я обыскал весь Интернет, но ответа не получил. Может быть, мне здесь не хватает чего-то очевидного. Пришлите, пожалуйста, помощь.


person Keannu Alforque Atilano    schedule 30.10.2017    source источник
comment
Вы пытаетесь использовать литерал шаблона, но вам нужно использовать обратные кавычки `room.${roomId}`   -  person thanksd    schedule 30.10.2017


Ответы (1)


Если вы хотите использовать шаблонные литералы, они должны быть между backticks, а не в одинарных кавычках, поэтому вы должны подписаться на:

Echo.join(`room.${roomId}`)
    .here(...)
    .joining(...)
    .leaving(...)
    .listen('NewMessage', (e) => {
        //
});
person craig_h    schedule 30.10.2017
comment
Привет, спасибо за ответ Broadcast :: channel (room. {$ RoomId}, function ($ user, $ roomId) {return // логика здесь}); это дает мне неопределенную переменную roomId. - person Keannu Alforque Atilano; 30.10.2017
comment
а также этот Echo.join (room.${roomId}) .here (...) .joining (...) .leaving (...) .listen ('NewMessage', (e) = ›{//}); выдает ошибку в установленном крючке: ReferenceError: companyId не определен - person Keannu Alforque Atilano; 30.10.2017
comment
Это дает мне некоторые исключения неопределенных переменных - person Keannu Alforque Atilano; 30.10.2017
comment
Извините, php это была моя ошибка, я забыл, что вы определяли канал, я обновлю свой ответ. Проблемы undefined не связаны с этим фрагментом кода, но если вы определили их в data, убедитесь, что перед ними стоит this this.companyId и т. Д. - person craig_h; 30.10.2017
comment
У меня нет roomId в Echo.join, потому что данные находятся в моем событии. Я передаю значение в вызов события. - person Keannu Alforque Atilano; 31.10.2017
comment
В этом случае идентификатор комнаты передается обратному вызову, поэтому он не будет доступен в момент, когда вы начнете слушать. Если вы используете широковещательное событие для определения комнаты, к которой вы присоединились, вам, вероятно, понадобится общедоступный канал под названием «комната». - person craig_h; 31.10.2017