You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js与Socket.io客户端连接指定服务器报404错误如何解决

Socket.IO连接404问题修复方案

以下是针对你问题的具体修复点和可用代码:

问题原因

  • 事件使用错误:connect是Socket.IO内置的连接成功通知事件,仅可通过socket.on('connect')监听,你代码中使用emit方法发送该事件属于逻辑错误,无法用于判断连接状态。
  • 连接参数冲突:你使用http协议填写服务端地址,但配置项中开启了secure: true,该参数会强制客户端走加密的wss协议发起连接,和服务端的HTTP协议不匹配,直接导致请求路径错误返回404。
  • 版本不兼容:Socket.IO v2和v3/v4版本的通信协议、默认请求路径存在差异,如果服务端使用v2版本,你本地安装v3/v4版本的客户端就会触发404报错,需要保证客户端和服务端的大版本一致。
  • 路径配置不匹配:如果服务端Socket.IO没有使用默认的/socket.io路径,你需要在客户端连接配置中手动指定path参数匹配服务端设置。

修正后的代码示例

const io = require("socket.io-client");
// 移除冲突的secure参数
const socket = io("http://demo-chat-server.on.ag/", {
  rejectUnauthorized: false
});

// 监听连接成功事件
socket.on("connect", () => {
    console.log(socket.connected); // 连接成功后输出true
});

// 新增连接错误监听,方便排查具体问题
socket.on("connect_error", (err) => {
    console.log("连接错误:", err);
});

socket.on("disconnect", () => {
    console.log(socket.connected); // 断开后输出false
});

额外适配方案

如果修改后仍然返回404,可确认服务端Socket.IO版本,若服务端使用v2版本,执行以下命令降级客户端版本即可:
npm install socket.io-client@2

内容的提问来源于stack exchange,提问作者Hande Yildirim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:54:03