2017-09-14 244 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*/} 

不確定是否最佳實踐來調用它,但它的工作原理。如果有人發現了這一點,並有一個問題或建議,我會很樂意聽到它。