React Native Android端WebSocket连接失败 Web端正常运行如何解决
问题根因
你遇到的错误核心是127.0.0.1为回环地址,不同运行环境指向的目标不一致:
- Web端运行在开发机的浏览器中,
127.0.0.1:8000指向的是开发机本地启动的WebSocket服务,所以连接正常 - 安卓模拟器/实体安卓设备上运行RN应用时,
127.0.0.1:8000指向的是安卓设备自身,而安卓设备本地并没有运行对应的WebSocket服务,所以会抛出连接失败错误。
排查修复步骤
- 第一步:替换WebSocket连接地址
- 如果你使用安卓模拟器调试:将连接地址中的
127.0.0.1替换为10.0.2.2,这是安卓模拟器官方预留的、指向开发主机本地回环地址的特殊IP - 如果你使用实体安卓设备调试:确保设备和开发机连接同一个WiFi,查询开发机的局域网IP(Windows执行
ipconfig,Mac/Linux执行ifconfig/ip addr,一般为192.168.x.xx格式),将连接地址替换为ws://[开发机局域网IP]:8000
- 如果你使用安卓模拟器调试:将连接地址中的
- 第二步:检查安卓端网络配置
- 确认安卓项目
AndroidManifest.xml中已添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果你使用未加密的ws协议而非wss协议,安卓9及以上版本默认禁止明文流量传输,需要在
AndroidManifest.xml的application标签中添加明文流量许可配置:<application ... android:usesCleartextTraffic="true" ... >
- 确认安卓项目
- 第三步:验证服务可访问性
- 确保本地WebSocket服务绑定的是
0.0.0.0而非仅127.0.0.1,否则外部设备无法访问该服务 - 配置地址完成后,先在安卓设备的自带浏览器中输入替换后的IP+端口,确认可以正常访问服务,排除网络不通的问题
- 确保本地WebSocket服务绑定的是
- 第四步:排查环境干扰
- 关闭开发机的防火墙,或者放行8000端口的入站规则
- 关闭开发机和安卓设备上的代理、VPN工具,避免干扰局域网连接
内容的提问来源于stack exchange,提问作者sib
相关产品推荐
相关产品推荐

