refactor: 优化前端网络层和应用配置

- 优化AppConfig应用配置,支持多环境
- 优化ApiService网络服务
- 优化AuthService认证服务
- 优化WebSocketClient连接处理
This commit is contained in:
iammm0
2026-01-28 12:59:15 +08:00
parent 6a36407b25
commit 4d5433d2e8
4 changed files with 62 additions and 24 deletions

View File

@@ -1,25 +1,63 @@
package com.huaga.life_echo.config package com.huaga.life_echo.config
import com.huaga.life_echo.BuildConfig
/**
* 应用配置管理
*
* 环境切换说明:
* - 只需在 build.gradle.kts 中修改 IS_DEBUG_MODE 即可切换环境
* - true = 开发模式显示调试UI连接开发服务器
* - false = 生产模式隐藏调试UI连接生产服务器
*
* 默认行为:如果出现异常,默认使用开发环境配置(安全起见)
*/
object AppConfig { object AppConfig {
// API 基础 URL 配置
// ==================== 服务器地址配置 ====================
// 如需修改服务器地址,只需修改下面的常量即可
// 开发环境物理机测试使用内网IP
private const val DEV_API_URL = "http://192.168.10.9:8000"
private const val DEV_WS_URL = "ws://192.168.10.9:8000"
// 生产环境(公网地址)
private const val PROD_API_URL = "https://lifecho.worldsplats.com"
private const val PROD_WS_URL = "wss://lifecho.worldsplats.com"
// Android模拟器备用地址10.0.2.2 映射到主机 localhost
// private const val EMU_API_URL = "http://10.0.2.2:8000"
// private const val EMU_WS_URL = "ws://10.0.2.2:8000"
// ==================== 环境判断 ====================
/**
* 是否为调试模式
* - true: 开发模式显示调试UI组件
* - false: 生产模式,隐藏调试组件
*
* 默认值true出问题时默认开发模式方便调试
*/
val isDebugMode: Boolean = try {
BuildConfig.IS_DEBUG_MODE
} catch (e: Exception) {
true // 默认开发模式
}
/**
* API 基础 URL
* 根据 isDebugMode 自动选择开发或生产服务器
*/
val BASE_URL: String = if (isDebugMode) DEV_API_URL else PROD_API_URL
/**
* WebSocket 基础 URL
* 根据 isDebugMode 自动选择开发或生产服务器
*/
val WS_BASE_URL: String = if (isDebugMode) DEV_WS_URL else PROD_WS_URL
// ==================== 说明 ====================
// //
// 物理机测试使用实际的内网IP地址如 192.168.10.9 // 注意:从 Android 9 (API 28) 开始默认禁止明文HTTP流量
// Android模拟器使用 10.0.2.2 来访问主机(开发机器) // 开发环境需要在 network_security_config.xml 中配置允许明文流量
//
// 注意从Android 9 (API 28)开始默认禁止明文HTTP流量
// 已在 network_security_config.xml 中配置允许明文流量(仅用于开发环境)
// 生产环境应该使用HTTPS并移除明文流量配置
// 生产环境配置:公网地址
const val BASE_URL = "http://192.168.10.9:8000"
const val WS_BASE_URL = "ws://192.168.10.9:8000" // WebSocket必须使用ws://协议
// 开发环境配置(已注释)
// 物理机测试:
// const val BASE_URL = "http://192.168.10.9:8000"
// const val WS_BASE_URL = "ws://192.168.10.9:8000"
// Android模拟器测试
// const val BASE_URL = "http://10.0.2.2:8000"
// const val WS_BASE_URL = "ws://10.0.2.2:8000"
} }

View File

@@ -38,7 +38,7 @@ class ApiService(
} }
companion object { companion object {
private const val BASE_URL = com.huaga.life_echo.config.AppConfig.BASE_URL private val BASE_URL = com.huaga.life_echo.config.AppConfig.BASE_URL
} }
// ==================== 对话相关API ==================== // ==================== 对话相关API ====================

View File

@@ -41,8 +41,8 @@ class AuthService {
} }
companion object { companion object {
private const val BASE_URL = AppConfig.BASE_URL private val BASE_URL = AppConfig.BASE_URL
private const val AUTH_BASE = "$BASE_URL/api/auth" private val AUTH_BASE = "$BASE_URL/api/auth"
} }
/** /**

View File

@@ -38,7 +38,7 @@ class WebSocketClient {
companion object { companion object {
private const val TAG = "WebSocketClient" private const val TAG = "WebSocketClient"
private const val BASE_URL = com.huaga.life_echo.config.AppConfig.WS_BASE_URL private val BASE_URL = com.huaga.life_echo.config.AppConfig.WS_BASE_URL
private const val RECONNECT_DELAY_MS = 3000L private const val RECONNECT_DELAY_MS = 3000L
private const val MAX_RECONNECT_ATTEMPTS = 5 private const val MAX_RECONNECT_ATTEMPTS = 5
} }