Laravel Echo Server通过以下方式启动:
laravel-echo-server start
并且正常运行:
L A R A V E L E C H O S E R V E R
version 1.3.1
Starting server...
✔ Running at localhost on port 6001
✔ Channels are ready.
✔ Listening for http events...
✔ Listening for redis events...
Server ready!
CHANNEL private-user:09222583-ef73-5640-bcc8-062b36c4f380.d3d0a4d2-0c95-5f5f-aea4-1dfe1fa36483
然而,在前端,民意调查似乎失败了。 “网络”选项卡显示请求不断尝试连接并失败:
网址如下所示:
https://example.com:6001/socket.io/?EIO=3&transport=polling&t=MGEIXhf
laravel-echo-server.json
看起来像这样:
{
"authHost": "https://example.com",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {
"host": "127.0.0.1",
"password": "56df4h5dfg4"
}
},
"devMode": false,
"host": null,
"port": "6001",
"protocol": "https",
"socketio": {},
"sslCertPath": "/etc/nginx/ssl/example_com/ssl-bundle.crt",
"sslKeyPath": "/etc/nginx/ssl/example_com/example_com.key",
"sslCertChainPath": "",
"sslPassphrase": ""
}
端口6001
似乎在ufw
:
Status: active
To Action From
-- ------ ----
...
6001 ALLOW Anywhere
...
6001 (v6) ALLOW Anywhere (v6)
...
答案 0 :(得分:0)
确认您在js文件中也使用了相同的端口号。
import Echo from 'laravel-echo'
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'});
答案 1 :(得分:0)
我遇到了完全相同的问题。在我的本地设置中,一切正常,但是在暂存过程中,Droplet ufw
阻止了每个传入请求/var/log/ufw.log
,表明它们都被阻止了。我已经在ufw
中打开了6001,甚至还可以通过IP访问ufw
中的所有内容,但是请求仍然被阻止。
尽管我真的不希望有安全隐患,但我暂时禁用了ufw
,一切都开始起作用,连接即刻建立,没有超时。然后,我又迅速启用了ufw
,一切都继续进行。我在其他浏览器中测试了新的连接-都可以正常工作。
因此,尽管尝试关闭防火墙然后再打开确实是一个很糟糕的建议,但这确实对我有用。
我希望其他人能够以一种安全的方式来诊断和修复此类UFW
问题的方法。
答案 2 :(得分:0)
我已经找到了造成问题的原因。
我用ufw设置的第一条规则是允许ssh流量。 然后,我安装了fail2ban,该过程的一部分使用iptables-persistent保存了iptables。
后来我添加了ufw规则以允许6001正常运行。
重启后,即使在ufw的状态输出中将其列为“打开”状态,它也停止处于打开状态-重新启动6001后,它无法正常工作的原因是iptables已恢复,并添加了添加6001规则之前的副本。
因此,如果您运行了iptables持久性,请确保使用
sudo dpkg-reconfigure iptables-persistent
添加任何新的ufw规则后。