我在使用 Laravel Echo 时遇到了问题(我认为)。我已经构建了一个可以在本地运行的 vue 聊天应用程序。我什至将它克隆到另一台机器上并让它正常工作。但是当我将它投入生产时,它不起作用。我没有在服务器上运行 npm,我只是在提交和推送到服务器之前运行 npm prod。出于某种原因,它只是不起作用。正如我在调试控制台中看到的那样,消息正在传递到推送器。
这是一些代码:
mounted() {
console.log('mounted');
Echo.private(`messages.${this.user.id}`)
.listen('NewMessage', (e) => {
console.log('in echo');
this.hanleIncoming(e.message);
});
axios.get('/contacts')
.then((response) => {
this.contacts = response.data;
});
},
methods: {
startConversationWith(contact) {
this.updateUnreadCount(contact, true);
axios.get(`/conversation/${contact.id}`)
.then((response) => {
this.messages = response.data;
this.selectedContact = contact;
})
},
saveNewMessage(message) {
console.log(message);
this.messages.push(message);
},
hanleIncoming(message) {
if (this.selectedContact && message.from == this.selectedContact.id) {
console.log('inside if of handleincoming');
this.saveNewMessage(message);
return;
}
this.updateUnreadCount(message.from_contact, false);
}
}
在本地时,我得到所有的 console.logs,但在 prod 上我只得到一个,这是因为 saveMessage 在从消息聊天窗口中按回车时被调用。我是否需要在服务器上安装一些东西才能让 echo 工作,因为我没有在服务器上执行 npm install 。我认为甚至没有安装节点。如何让 echo 用于生产?任何帮助,将不胜感激!