Express集成Socket.io运行时请求/socket.io路径返回404错误求助
问题修复方案
服务端Socket.io依赖导入错误
你当前服务端引入的是socket.io-client客户端包,服务端需要使用专门的服务端依赖,首先执行安装:npm install socket.io替换服务端的io实例化代码:
// 把 const io=require('socket.io-client')(server); 替换为下面的代码 const io = require('socket.io')(server, { cors: { origin: "*" } // 本地开发可临时放开跨域,生产环境请替换为实际前端域名 });端口监听对象配置错误
Socket.io逻辑是绑定在你创建的server(http.Server实例)上的,但你当前用app.listen(3030)启动服务,相当于启动了一个未挂载Socket.io的独立HTTP服务,自然无法处理/socket.io路径的请求,修改监听代码:// 注释掉 app.listen(3030); 启用下面的监听逻辑 server.listen(3030, () => { console.log('服务已启动,访问地址:http://localhost:3030'); });客户端Socket.io版本不兼容
你当前引入的0.9.16版本客户端SDK和新版Socket.io服务端完全不兼容,建议直接使用服务端自动托管的客户端脚本,版本自动匹配,修改HTML中的引入代码:<!-- 替换原有CDN引入的旧版脚本 --> <script src="/socket.io/socket.io.js"></script>
完成以上三处修改后重启服务,即可解决/socket.io路径404的问题。
内容的提问来源于stack exchange,提问作者Rudransh J
相关产品推荐
相关产品推荐

