В настоящее время я работаю с простым приложением, использующим 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 - это идентификатор разговора для ясности. Я надеюсь, вы поняли мою точку зрения. Спасибо:)