refactor: 优化前端网络层和应用配置
- 优化AppConfig应用配置,支持多环境 - 优化ApiService网络服务 - 优化AuthService认证服务 - 优化WebSocketClient连接处理
This commit is contained in:
@@ -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"
|
|
||||||
}
|
}
|
||||||
@@ -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 ====================
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user