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

React Native WebSocket连接报无法解析主机错误排查求助

不同环境下的WebSocket连接示例

NodeJS 环境

const WebSocket = require('ws');
const ws = new WebSocket('wss://siteurl');

ws.on('open', function open() {
    ws.send('');
});

ws.on('message', function incoming(message) {
    console.log(message);
});

React Native 环境

let connection = new WebSocket('wss://siteurl');

connection.onopen = () => {
            connection.send('');
        };

connection.onmessage = ((event) => {
            console.log(event);
        });

connection.onerror = (event) => {
            console.log(event);
        }

浏览器环境

const socket = new WebSocket('wss://siteurl');
        
        socket.onopen = () => {
            console.log('Socket connected!');
            socket.send('');
        }

        socket.onmessage = (message) => {
            console.log(`Message:\n`, message.data);
        }
报错原因说明

上述代码在NodeJS、浏览器环境均运行正常,但React Native代码在Android Studio模拟器中通过npm run android运行时返回「Unable to resolve host」错误,可能原因如下:

  • 后端地址指向错误:如果连接的是本地开发环境的服务,填写localhost会指向Android模拟器本身,而非运行后端服务的开发主机,需将地址改为模拟器默认指向开发机的特殊IP10.0.2.2,端口需同步保留。
  • 缺少网络权限:Android应用默认没有网络访问权限,需要在项目android/app/src/main/AndroidManifest.xml文件的manifest标签下添加网络权限声明:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 模拟器网络异常:检查模拟器是否正常联网,可打开模拟器内置浏览器访问公网地址验证,如果网络断开,重连模拟器网络或重启模拟器即可。
  • 主机名解析失败:如果使用的是自定义私有域名,开发机的hosts文件配置了域名映射但模拟器没有同步配置,会导致解析失败;如果是公网域名,可检查模拟器的DNS配置是否正常,必要时可更换模拟器DNS为公共DNS(比如8.8.8.8)。
  • 代理配置冲突:如果模拟器设置了不可用的代理,会导致域名解析失败,可检查模拟器的代理配置,关闭无用代理后重试。
  • 地址拼写错误:检查WebSocket连接的URL是否有拼写错误、多余空格、协议头错误等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:27:02