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

SignalR在浏览器正常运行,Android APK无法连接问题排查

针对你的问题,以下是几个大概率能解决的方向,按优先级排查:

1. 安卓网络安全策略阻止明文HTTP请求

安卓9及以上版本默认禁止明文HTTP通信,Expo Go在开发模式会自动绕过这个限制,但EAS打包的正式APK不会。如果你的SignalR Hub用的是HTTP,必须配置网络安全规则:

  • 在项目根目录创建android/app/src/main/res/xml/network_security_config.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- 替换成你的SignalR Hub服务器域名或IP -->
        <domain includeSubdomains="true">server_where_hub_is_hosted</domain>
        <domain includeSubdomains="true">你的服务器内部IP</domain>
    </domain-config>
</network-security-config>
  • 打开android/app/src/main/AndroidManifest.xml,在<application>标签里添加:
android:networkSecurityConfig="@xml/network_security_config"

2. 显式指定SignalR传输协议

浏览器和Expo Go可能自动优先使用WebSocket,但打包后的APK可能因为环境限制无法建立WebSocket连接,需要强制启用兼容的传输方式:

修改客户端连接代码,添加传输类型指定:

const connection = new signalR.HubConnectionBuilder()
  .withUrl("http://server_where_hub_is_hosted:5000/stockHub", {
    // 同时支持WebSocket和长轮询
    transport: signalR.HttpTransportType.WebSockets | signalR.HttpTransportType.LongPolling
  })
  .configureLogging(signalR.LogLevel.Information)
  .withAutomaticReconnect()
  .build();

3. 检查服务端HSTS配置

你的服务端在非开发环境启用了app.UseHsts(),HSTS会强制客户端使用HTTPS连接,如果你的Hub还是HTTP,就会导致连接失败。测试阶段可以暂时注释掉这行代码:

// if (!app.Environment.IsDevelopment())
// {
//     app.UseExceptionHandler("/Home/Error");
//     // 注释掉HSTS,测试HTTP连接
//     // app.UseHsts();
// }

生产环境建议把SignalR Hub切换到HTTPS。

4. 确认EAS打包时的Hub地址正确

检查你的环境变量配置,确保打包时用的是正确的Hub地址,而不是开发环境的本地地址:

  • 在app.config.js里配置公开环境变量:
export default {
  expo: {
    // ...其他配置
    extra: {
      hubUrl: process.env.EXPO_PUBLIC_HUB_URL,
    },
  },
};
  • 客户端代码里使用这个变量:
const connection = new signalR.HubConnectionBuilder()
  .withUrl(process.env.EXPO_PUBLIC_HUB_URL)
  // ...其他配置
  .build();
  • 在eas.json的preview profile里确保环境变量正确传入,或者打包前手动设置EXPO_PUBLIC_HUB_URL。

5. 验证安卓网络权限

虽然Expo默认会添加INTERNET权限,但偶尔打包配置可能遗漏,检查app.json:

{
  "expo": {
    "android": {
      "permissions": ["INTERNET"]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:27