如何动态更改/更新laravel echo正在监听的私人频道

时间:2018-11-03 14:39:10

标签: laravel vue.js echo.js

我目前正在使用一个使用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组件上,我添加了一个函数,该函数使用事件总线更改app.js上convoId的值

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

这也起作用。现在我的问题是这行代码

上的convoId

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

不会更新,仍然使用它的第一个值,这就是即使convoId已经更改,我仍然在广播的原因。我应该如何更新其值,以便它现在可以使用不同的convoId收听不同的频道。或者,如果我的问题没问错,那么我现在应该如何用convoId的新值动态更改此私有频道,因为它仍然使用convoId的旧值而不是新值进行监听。

注意:为了清楚起见,convoId是对话ID。我希望你明白我的意思。谢谢:)

0 个答案:

没有答案
相关问题