Socket.io 移动到不同的域名后抛出 connect_error “服务器错误”

Posted

技术标签:

【中文标题】Socket.io 移动到不同的域名后抛出 connect_error “服务器错误”【英文标题】:Socket.io throw connect_error "server error" after moving to a different domain name 【发布时间】:2021-10-22 23:28:03 【问题描述】:

这是我上一个问题的延伸:

socket.io always has connection false

目前,我有两台服务器部署在两个不同的域名中。第一个服务器与 socket.io 完美配合,所以我将服务器重新部署到新域名,只需从 GitHub 拉出相同的分支,安装所有内容并运行它。然后我发现我所有的socket.io连接都失败了,症状和上次完全一样:连接总是'false',断开总是'true'。

这次我很确定它与 cors 无关,因为我尝试了io.origins((origin, cb) => if (whitelist.includes(origin)) cb(null, true) else cb('failed', false) ) 并且它显示来源是允许的。

我也尝试了cors: origin: '*' ,但也没有用。

奇怪的是,尽管他们使用相同的代码,但连接到第一个域名却可以正常工作。但是第二个有问题。

更新:

我用它来跟踪错误消息。

        this.socket.on('connect_error', function(err) 
            console.log(`connect_error due to $err.message`);
        );

这就是返回的内容:

connect_error due to server error

与此同时,在服务器端,我只能看到新连接正在创建并由于 ping 超时而断开连接。

在哪里可以找到更多信息来帮助我进行调试?

【问题讨论】:

【参考方案1】:

原来我在部署到新域名后忘记运行npm i。 socket.io 的版本未更新并导致该问题。

看到这个的每个人,只要确保你在放弃调试之前已经更新了包。

【讨论】:

谢谢你!升级 socket.io 服务器解决了我的问题

以上是关于Socket.io 移动到不同的域名后抛出 connect_error “服务器错误”的主要内容,如果未能解决你的问题,请参考以下文章

画布在 LoadFromJson 后抛出污染错误

用户单击信息图标后抛出免责声明文本的最简单方法?

FireBase 在第一轮循环后抛出 WebException 400

Vue bootstrap-vue安装后抛出错误

CLLocationmanager 在约 30 秒后抛出

部署后 Socket.io 不工作 - 抛出错误 - 405(不允许)