使用 Laravel 回显和广播创建动态频道
Create dynamic channels using Laravel echo and broadcasting
我正在尝试创建一个聊天,用户可以在其中创建 1 对 1 对话甚至群组对话。我正在使用 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
});
但是回声功能应该放在哪里呢?
我正在使用
创建 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
创建的每个实例都会加入其中。但我想更改为只加入某个频道。
比我想象的要容易。
刚刚创建的方法,每当我想更改频道时都会调用该方法,例如,不同的 window 聊天。将函数放在方法中
showThread(thread) {
Echo.leave(/*The last channel*/);
Echo.join(/*New room*/)
.listen('MessagePosted', (e) =>{/*actions*/}
不确定不断调用它是否是最佳做法,但它确实有效。如果有人发现这个并有问题或建议,我很乐意听到。
我正在尝试创建一个聊天,用户可以在其中创建 1 对 1 对话甚至群组对话。我正在使用 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
});
但是回声功能应该放在哪里呢?
我正在使用
创建 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
创建的每个实例都会加入其中。但我想更改为只加入某个频道。
比我想象的要容易。
刚刚创建的方法,每当我想更改频道时都会调用该方法,例如,不同的 window 聊天。将函数放在方法中
showThread(thread) {
Echo.leave(/*The last channel*/);
Echo.join(/*New room*/)
.listen('MessagePosted', (e) =>{/*actions*/}
不确定不断调用它是否是最佳做法,但它确实有效。如果有人发现这个并有问题或建议,我很乐意听到。