2017-09-14 136 views
0

我试图创建一个聊天中,用户可以创建1对1的谈话,甚至群聊动态通道。我正在使用Laravel 5.5和Vue.js.创建使用Laravel回声和广播

从我从文件读取加入了外卡聊天是可能的:

Echo.join('chat.'{roomId}) 
     //.here() 
     //.joining() 
     //.leaving() 
     .listen('MessagePosted', (e) => { 
      //Some action 
     }); 
}); 

routes/channels.php我应该使用

Broadcast::channel('chat.{roomId}', function ($user, $roomId) { 
    //some form of authentication 
}); 

但我应该在哪里放置回声功能?

我创建与

const app = new Vue({ 
el: '#app', 
data: { 
    //Some arrays 
}, 
methods: { 
    //some methods 
}, 
created() { 
    //some axios functions to happen when it is created 

    Echo.join('chatroom') 
     //.here() 
     //.joining() 
     //.leaving() 
     .listen('MessagePosted', (e) => { 
      console.log(e); 
      this.messages.push({ 
       message: e.message.message, 
       user: e.user 
      }); 
     }); 

} 

})的Vue的应用;

正如你可以看到我用来建立与#app创建的每个实例都将加入一个普通通道。但我想改变这种状况的加盟只是某个频道。

回答

1

比我想象的更容易。

刚刚创建的方法,每当我想换频道,例如,不同的聊天窗口将被调用。将函数放置在方法内

showThread(thread) { 
    Echo.leave(/*The last channel*/); 
    Echo.join(/*New room*/) 
     .listen('MessagePosted', (e) =>{/*actions*/} 

不确定是否最佳实践来调用它,但它的工作原理。如果有人发现了这一点,并有一个问题或建议,我会很乐意听到它。