【问题标题】:Create dynamic channels using Laravel echo and broadcasting使用 Laravel 回显和广播创建动态频道
【发布时间】:2017-09-14 18:38:42
【问题描述】:

我正在尝试创建一个聊天,用户可以在其中创建一对一对话,甚至是群组对话。我正在使用 Laravel 5.5 和 Vue.js。

根据我从文档中读到的内容,可以使用通配符加入聊天:

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
});

但是我应该把 Echo 功能放在哪里呢?

我正在创建 Vue 应用程序

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
            });
        });

}

});

如您所见,我曾经创建一个通用频道,每个使用#app 创建的实例都会加入其中。但我想将其更改为仅加入某个频道。

【问题讨论】:

    标签: laravel vue.js laravel-echo


    【解决方案1】:

    比我想象的要容易。

    刚刚创建的方法将在我希望更改频道时调用,例如,不同的窗口聊天。将函数放在方法中

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

    不确定不断调用它是否是最佳做法,但它确实有效。如果有人发现这个并有任何问题或建议,我很乐意听到。

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 2018-03-03
      • 2021-06-01
      • 2017-07-06
      • 2017-10-20
      • 2021-11-15
      • 2021-07-15
      • 2023-03-17
      相关资源
      最近更新 更多