繁体   English   中英

Laravel Echo Server-Socket.io-轮询失败

[英]Laravel Echo Server - Socket.io - Polling fails

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

但是,在前端,轮询似乎失败了。 “网络”选项卡显示请求不断尝试连接并失败:

在此处输入图片说明

URL如下所示: https://example.com:6001/socket.io/?EIO=3&transport=polling&t=MGEIXhf : https://example.com:6001/socket.io/?EIO=3&transport=polling&t=MGEIXhf : 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中处于ufw

Status: active

To                         Action      From
--                         ------      ----
...
6001                       ALLOW       Anywhere
...
6001 (v6)                  ALLOW       Anywhere (v6)
...

确认您在js文件中也使用了相同的端口号。

import Echo from 'laravel-echo'
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'});

我遇到了完全相同的问题。 在我的本地设置中,一切正常,但在暂存过程中, ufw阻止了每个传入的请求,/ /var/log/ufw.log显示它们/var/log/ufw.log阻止。 我已经在ufwufw了6001,我什至还可以通过ufw访问ufw所有内容,但是请求仍然被阻止。

尽管我真的不想安全隐患,但我还是短暂禁用了ufw ,一切都开始起作用,连接立即建立,没有超时。 然后,我很快又重新启用了ufw ,一切继续进行。 我在其他浏览器中测试了新的连接-都正常。

因此,尽管尝试关闭防火墙然后再打开确实是一个糟糕的建议,但它确实对我有用。

我希望其他人能够以一种安全的方式来诊断和解决此类UFW问题。

在我的情况下,我找到了问题的原因。

我用ufw设置的第一条规则是允许ssh流量。 然后,我安装了fail2ban,该过程的一部分使用iptables-persistent保存了iptables。

当我以后添加ufw规则以允许6001时,一切正常。

重新启动后6001停止打开,即使它在ufw的状态输出中被列为打开-之所以不起作用,是因为iptables已被恢复,并且添加了6001规则之前已复制了副本。

因此,如果您运行了iptables-persistent,请确保使用

sudo dpkg-reconfigure iptables-persistent

添加任何新的ufw规则后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM