Merge remote-tracking branch 'origin/dev' into cody/netwrok_SDK
# Conflicts: # apps/im_app/lib/features/chat/presentation/chat_db_test_view_model.dart # apps/im_app/lib/features/login/presentation/login_view_model.dart 修复逻辑漏洞,性能优化
This commit is contained in:
@@ -103,7 +103,7 @@ final apiConfigProvider = Provider<ApiConfig>((ref) {
|
||||
onDecryptResponse: null, // TODO: 接入 cipher_guard_sdk 后注入响应解密回调
|
||||
onBusinessError: null, // TODO: 接入业务错误统一处理(弹窗 / Toast / 跳转等)
|
||||
onTransformResponse:
|
||||
null, // TODO: 如后端信封结构非标准,在此归一化为 { code, data, message }
|
||||
null, // TODO: 如后端响应格式非标准,在此归一化为 { code, data, message }
|
||||
onGetTokenExpiry: parseJwtExpiry,
|
||||
maxRetries: AppConstants.maxRetries,
|
||||
retryBaseDelay: AppConstants.retryBaseDelay,
|
||||
@@ -214,6 +214,7 @@ final socketManagerProvider = Provider<SocketManager>((ref) {
|
||||
final manager = SocketManager(
|
||||
client: client,
|
||||
wsUrl: _buildWsUrl(AppConfig.apiBaseUrl),
|
||||
disconnectInBackground: false, // 所有平台后台保活,心跳不停、连接不断
|
||||
onMessageTransform: null, // TODO: 接入加解密 SDK 后注入解密回调
|
||||
onBeforeReconnect: () async {
|
||||
// 重连前检查 token 是否即将过期,是则主动刷新
|
||||
@@ -327,9 +328,11 @@ String _buildWsUrl(String httpBaseUrl) {
|
||||
//
|
||||
// WidgetsBindingObserver(App 层 app.dart)
|
||||
// → SocketManager.onEnterBackground()
|
||||
// disconnectInBackground=true → disconnect(默认,移动端省电)
|
||||
// disconnectInBackground=false → 完全保活,不断连不暂停心跳(桌面端)
|
||||
// → SocketManager.onEnterForeground() → onBeforeReconnect → reconnect
|
||||
// disconnectInBackground=false → 完全保活,心跳不停(本项目默认)
|
||||
// disconnectInBackground=true → disconnect + 暂停心跳(省电模式)
|
||||
// → SocketManager.onEnterForeground()
|
||||
// 保活模式 → 检查连接健康,异常则重连
|
||||
// 断连模式 → onBeforeReconnect → reconnect
|
||||
//
|
||||
// Token 刷新 → WebSocket 同步链路:
|
||||
//
|
||||
@@ -524,5 +527,5 @@ String _buildWsUrl(String httpBaseUrl) {
|
||||
// Upload B: 二进制上传到 S3 presigned URL
|
||||
// @override String get path => presignedURL; // 完整 URL,不拼 baseURL
|
||||
// @override Object? get uploadData => bytes; // Uint8List
|
||||
// @override decodeResponse(response) { ... } // S3 不走标准信封
|
||||
// @override decodeResponse(response) { ... } // S3 不走标准响应格式
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user