我设法让Laravel Echo启动并运行,但无法弄清楚如何从客户端发出事件(而不是从Laravel后端发出它们而只是在客户端监听它们)。我使用以下内容:
这是我的bootstrap.js
import Echo from 'laravel-echo'
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
以下是侦听Echo事件的客户端Vue组件的一部分:
Echo.channel('channelReceiveLiveData')
.listen('liveDataTrigger', (e) => {
that.$set(
that.state.labelDataSet,
e.data.capture_timestamp,
e.data.capture_timestamp
);
that.pushTestData(e.data);
});
一切都按预期工作。我现在要做的是通过利用WebSocket连接将数据从客户端(VueJS组件)发送到Laravel后端(因此数据可以存储在应用程序数据库中)。我试图避免发送多个AJAX请求,因为我需要每秒向服务器发送数据,并且我注意到一次发送太多连续的HTTP请求会导致多个请求被丢弃。
我会想象会存在这样的事情:
Echo.emit('test')
但似乎Laravel Echo并不是为了支持将事件发回Laravel而设计的。
有关如何完成此任务的任何建议?我的猜测是我必须以某种方式使用广播公司(socketIO)将消息发送到laravel-echo-server,但我不知道如何做到这一点。