Express js环境下Socket io连接无法建立,POSTMAN返回404求助
问题根因
你的服务启动对象配置错误,是导致Socket.IO连接404的直接原因:
你手动通过http.createServer(app)创建了http服务实例server,并且将Socket.IO服务挂载在这个server实例上,但最终调用app.listen(1337)启动服务。而app.listen是express封装的方法,内部会新建一个独立的http服务实例,和你挂载Socket.IO的server完全没有关联,因此Socket.IO的握手路由根本没有注册到实际运行的服务上,访问自然返回404。
修复方案
把启动服务的代码从app.listen改成server.listen即可,修改后的对应代码片段如下:
// 删掉原来的app.listen代码,替换为下面的 server.listen(1337, () => { console.log('listening on *:1337 '); });
可选补充配置
如果后续遇到跨域连接问题,可以在初始化Socket.IO时添加CORS配置,示例如下:
const io = new Server(server, { cors: { origin: "*", // 生产环境建议替换为实际允许的域名 methods: ["GET", "POST"] } });
内容的提问来源于stack exchange,提问作者Devsi Odedra
相关产品推荐
相关产品推荐

