我正在使用Redis,以及socket.io,laravel-echo-server和VUe。
在我的本地计算机上,它工作正常,但是当我上传并在服务器中进行配置时,唯一的问题是laravel-echo-server甚至没有尝试进行身份验证或发送错误,但是当我发送或广播事件:
运行事件时,它反映在Laravel-echo-server中:
生产服务器图像
但是它甚至没有尝试监听或认证,这是我在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控制台中没有显示任何内容。
使用相同的配置,这就是它在本地计算机中的外观:
本地主机图像
正如我所说,它甚至不尝试进行身份验证或连接到频道。
这是我的laravel-echo-server.json:
生产服务器图像
我想念什么吗? 为什么它可以处理事件但不收听,或者至少尝试收听它们?
非常感谢您!
编辑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的一部分:
生产服务器图像
在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
});
{
"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": ""
}
}
基本上它现在可以工作,但只能在公共频道中使用 ,我认为该错误与另一个配置有关,让我解释一下:
服务器的主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?
非常感谢您的帮助!