React与Node WebSocket聊天系统手机端后端连接故障修复求助
解决方案
检查前端WebSocket连接地址
别在代码里写死ws://localhost:8080——手机访问时localhost指向的是手机自身,不是你的电脑。改成电脑的局域网IP(比如ws://192.168.1.105:8080),或者动态获取当前页面的主机地址:const socket = new WebSocket(`ws://${window.location.hostname}:8080`);确认Node后端监听地址
如果你的后端代码是这么写的:server.listen(8080, '127.0.0.1');那它只会响应本地请求,把监听地址改成
0.0.0.0,允许所有网卡的请求:server.listen(8080, '0.0.0.0');验证端口是否可访问
在手机上用端口扫描工具(比如Port Scanner)测试电脑IP的WebSocket端口(比如8080)是否能连通。如果连不上,说明要么后端没监听对地址,要么端口被路由器/系统的深层安全策略拦截——可以试试换个端口(比如8081)再测试。检查WebSocket的CORS配置
有些WebSocket库(比如ws)需要单独配置跨域,不是只靠HTTP的CORS中间件。比如用ws时要这么设置:const wss = new WebSocket.Server({ server, cors: { origin: '*', // 生产环境建议指定具体域名/IP methods: ['GET', 'POST'] } });关闭路由器的AP隔离功能
部分路由器默认开启AP隔离,会阻止同一WiFi下的设备互相通信。进路由器管理后台(一般是192.168.1.1或192.168.0.1),找到“AP隔离”“无线隔离”之类的选项,关掉它。确认设备在同一局域网
手机必须和电脑连同一个WiFi,不能用移动数据。可以在电脑上用ipconfig(Windows)或ifconfig(Mac/Linux)查自己的局域网IP,确保手机能ping通这个IP。
内容的提问来源于stack exchange,提问作者Ok Ok
相关产品推荐
相关产品推荐

