Laravel,SocketIO和Redis客户端发出

时间:2018-06-03 06:55:34

标签: laravel socket.io laravel-echo

我设法让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,但我不知道如何做到这一点。

0 个答案:

没有答案