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

Node.js + Express集成Socket.io时遇重复404错误求助

问题原因及解决方案

核心错误原因

服务端代码存在关键问题:你用app.listen()启动HTTP服务器,但Socket.io是绑定在http.createServer(app)创建的server实例上的。app.listen()会生成一个全新的HTTP服务器,和Socket.io关联的server并非同一个,导致Socket.io的/socket.io端点未被正确注册,客户端发起请求时自然返回404。

修复步骤

1. 修正服务端服务器启动逻辑

将app.listen(port, ...)替换为server.listen(port, ...),确保Socket.io绑定的服务器是实际运行的实例:

// 替换原有的 app.listen 代码
server.listen(port, () => {
    console.log(`Server is running on port ${port}`);
})

2. 优化客户端Socket.io引入路径(可选但推荐)

当前HTML中直接引用node_modules下的socket.io.js,虽然服务端配置了静态路径,但更稳妥的方式是使用Socket.io默认提供的端点,修改HTML中的script标签:

<!-- 替换原有的node_modules路径引用 -->
<script src="/socket.io/socket.io.js"></script>

这能避免静态路径配置失误导致的资源加载问题。

3. 验证修复效果

重启服务端后访问http://localhost:3000/code,打开浏览器控制台,404错误应消失,多人实时输入同步功能可正常运行。

额外优化建议

  • 当前同步逻辑是直接覆盖整个文本框内容,多人同时输入时会出现光标跳动的问题,后续可使用operational-transform或yjs等库实现更流畅的协同编辑。
  • 服务端可维护一份共享的代码状态,新用户连接时主动推送最新内容,避免新用户看到空白文本框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:30:58