Laravel Echo Server,不收听频道,但可以处理事件

时间:2020-09-18 15:30:51

标签: laravel vue.js laravel-echo

我正在使用Redis,以及socket.io,laravel-echo-server和VUe。

在我的本地计算机上,它工作正常,但是当我上传并在服务器中进行配置时,唯一的问题是laravel-echo-server甚至没有尝试进行身份验证或发送错误,但是当我发送或广播事件:

运行事件时,它反映在Laravel-echo-server中:
生产服务器图像
enter image description here

但是它甚至没有尝试监听或认证,这是我在Vue中的监听代码:
生产服务器图像

mounted() {
        //LARAVEL ECHO, SOCKET.IO, REDIS, etc
        Echo.private(`messages.${this.user.id}`)
            .listen('NewMessage', (e) => {
                console.log("LLEGÓ MENSAJE NUEVO");
                console.log(e);
                this.handleIncoming(e.message);
            });

但是正如我提到的那样,它在Laravel-echo-server控制台中没有显示任何内容。 使用相同的配置,这就是它在本地计算机中的外观:
本地主机图像 enter image description here

正如我所说,它甚至不尝试进行身份验证或连接到频道。

这是我的laravel-echo-server.json:
生产服务器图像

enter image description here

我想念什么吗? 为什么它可以处理事件但不收听,或者至少尝试收听它们?

非常感谢您!

编辑1:

这是我的.env文件的一部分
生产服务器图像

BROADCAST_DRIVER=redis
CACHE_DRIVER=file
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

这是我的bootstrap.js的一部分
生产服务器图像

import Echo from "laravel-echo"
window.io = require('socket.io-client');

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: '127.0.0.1:6001' //I CHANGED TO STATICALLY GO TO 127.0.0.1
});

这是我的config / database.php的一部分:
生产服务器图像 enter image description here

在localhost中,使用http:127.0.0.1:8000可以正常工作 和laravel echo的127.0.0.1:6001。

问题是当我在AWS Lightsail中上载和配置时,域为http://test1.erpnegocios.com,服务器中的路由为/ var / www / html / test1

编辑2: 我一直在阅读文章,指出bootstrap.js(socket.io)中的主机必须与laravel-echo-server.json中的主机相同,这就是为什么我同时使用这两个主机的原因:'127.0.0.1:6001 '(如图片所示),但问题仍然存在。
如果我运行sudo service redis-server stop,则laravel-echo控制台停止工作,因此我认为连接良好,但是我无法使客户端连接到通道,也无法连接到公共或私有
编辑3 伙计们,我将我的bootstrap.js和laravel-echo-server.json更改如下:
bootstrap.js

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001' //El host de laravel-echo-server
});

laravel-echo-server.json
{
"authHost": "http://test1.erpnegocios.com:8000",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}

我还在服务器中打开了端口8000,现在正在运行laravel-echo-server控制台,我看到:

enter image description here

基本上它现在可以工作,但只能在公共频道中使用 ,我认为该错误与另一个配置有关,让我解释一下:

服务器的主IP为3.83.87.137 在该服务器中,我有多个项目:
/ var / www / html / test1
/ var / www / html / erp
/ var / www / html / test等。

IP(3.83.87.137)指向/ var / www / html / erp,但我首先配置和使用test1。我相信我无法验证,因为将laravel-echo-server.json authHost指向3.83.87.137:8000指向/ var / www / html / erp,对吗?我是否应该更改配置,以便3.83.87.137指向/ var / www / html / o我可以将laravel-echo-server.json authHost配置为3.83.87.137:8000/test1?
非常感谢您的帮助!

0 个答案:

没有答案