Как динамически изменять / обновлять приватные каналы, которые слушает laravel echo - PullRequest
0 голосов
/ 03 ноября 2018

В настоящее время я работаю с простым приложением, использующим Laravel echo, и мне действительно было трудно с ним работать. Это мой код в app.js. Этот код уже работает, и когда происходит событие, другой пользователь получает трансляцию.

const app = new Vue({
el: '#app',
data: {
    convoId: $('meta[name="convoId"]').attr('content'),
    userId : $('meta[name="userId"]').attr('content')
},
created() {

    eventBus.$on('changeConvo',(data) => {
        this.convoId = data.convoId;
    });

    if(this.convoId != undefined){
         Echo.private('Convo.' + this.userId + '.' + this.convoId)
            .listen('BroadcastConvo', (e) => {    
                document.getElementById('ChatAudio').play();
            });
    }
}

});

В каком-то другом компоненте vue я добавил функцию, которая изменяет значение convoId в app.js с использованием шины событий

eventBus.$emit('changeConvo',{
   convoId:this.convoId
});  

и это тоже работает. Теперь моя проблема в том, что convoId в этой строке кода

Echo.private('Convo.' + this.userId + '.' + this.convoId)

не обновляет и все еще использует это первое значение, поэтому я все еще получаю широковещательную рассылку, даже если convoId уже был изменен. Как мне сделать так, чтобы его значение обновлялось, чтобы оно теперь слушало другой канал с другим convoId. Или, если мой вопрос не является неправильным, как мне динамически изменить этот частный канал с новым значением convoId, потому что он все еще слушает со старым значением convoId, а не новым.

Примечание: convoId - это идентификатор разговора для ясности. Я надеюсь, вы поняли мою точку зрения. Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...