@zeewain/3d-avatar-sdk 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -4
- package/dist/examples/test-vue2/package.json +1 -1
- package/dist/examples/test-vue3/package.json +1 -1
- package/dist/examples/test-vue3/src/App.vue +7 -3
- package/dist/examples/test-vue3/src/components/BroadcastAPI.vue +270 -2
- package/dist/index.d.ts +428 -398
- package/dist/index.es5.js +195 -45
- package/dist/index.es5.umd.js +195 -45
- package/dist/index.esm.js +188 -48
- package/dist/index.umd.cjs +188 -48
- package/package.json +2 -1
package/dist/index.es5.js
CHANGED
|
@@ -13253,7 +13253,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13253
13253
|
},
|
|
13254
13254
|
/** 生产环境配置 */
|
|
13255
13255
|
prod: {
|
|
13256
|
-
apiBaseUrl: 'https://
|
|
13256
|
+
apiBaseUrl: 'https://ai.zeewain3d.com'
|
|
13257
13257
|
}
|
|
13258
13258
|
};
|
|
13259
13259
|
/**
|
|
@@ -13264,7 +13264,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13264
13264
|
* @example
|
|
13265
13265
|
* ```typescript
|
|
13266
13266
|
* const config = getEnvConfig('prod');
|
|
13267
|
-
* console.log(config.apiBaseUrl); // https://
|
|
13267
|
+
* console.log(config.apiBaseUrl); // https://ai.zeewain3d.com/api/dh-talker
|
|
13268
13268
|
* ```
|
|
13269
13269
|
*/
|
|
13270
13270
|
function getEnvConfig(env, withApiModule) {
|
|
@@ -13763,6 +13763,8 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13763
13763
|
*/
|
|
13764
13764
|
var BroadcastTaskStatus;
|
|
13765
13765
|
(function (BroadcastTaskStatus) {
|
|
13766
|
+
/** 等待中(尚未开始请求) */
|
|
13767
|
+
BroadcastTaskStatus["PENDING"] = "pending";
|
|
13766
13768
|
/** 请求中 */
|
|
13767
13769
|
BroadcastTaskStatus["REQUESTING"] = "requesting";
|
|
13768
13770
|
/** 已完成 */
|
|
@@ -13832,7 +13834,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13832
13834
|
* @override
|
|
13833
13835
|
*/
|
|
13834
13836
|
BroadcastService.prototype.handleCallback = function (operation, code, message, data) {
|
|
13835
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
13837
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
13836
13838
|
// 提取 isBroadcastCompleted 参数
|
|
13837
13839
|
var isBroadcastCompleted = JSON.parse(data || '{}').isBroadcastCompleted;
|
|
13838
13840
|
// 先调用基类处理逻辑
|
|
@@ -13844,7 +13846,12 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13844
13846
|
if (isBroadcastCompleted) {
|
|
13845
13847
|
this.broadcastCompletedCount++;
|
|
13846
13848
|
var status_1 = this.getStatus();
|
|
13847
|
-
|
|
13849
|
+
// 判断是否所有任务都已完成:
|
|
13850
|
+
// 1. 没有待请求的任务 (PENDING)
|
|
13851
|
+
// 2. 没有正在请求的任务 (REQUESTING)
|
|
13852
|
+
// 3. Unity播放完成次数等于已完成任务数
|
|
13853
|
+
var isAllTasksCompleted = ((_a = status_1.queueInfo) === null || _a === void 0 ? void 0 : _a.pendingTasks) === 0 && ((_b = status_1.queueInfo) === null || _b === void 0 ? void 0 : _b.requestingTasks) === 0 && ((_c = status_1.queueInfo) === null || _c === void 0 ? void 0 : _c.completedTasks) === this.broadcastCompletedCount;
|
|
13854
|
+
if (isAllTasksCompleted) {
|
|
13848
13855
|
// 重置状态、计数
|
|
13849
13856
|
this.isBroadcastingAudio = false;
|
|
13850
13857
|
this.hasReceivedAudio = false;
|
|
@@ -13854,19 +13861,19 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13854
13861
|
this.logger.warn('Broadcast all completed');
|
|
13855
13862
|
}
|
|
13856
13863
|
// this.logger.warn('AAAAAA', { status: this.getStatus(), broadcastCompletedCount: this.broadcastCompletedCount });
|
|
13857
|
-
(
|
|
13864
|
+
(_e = (_d = this.callbacks).onFinish) === null || _e === void 0 ? void 0 : _e.call(_d);
|
|
13858
13865
|
}
|
|
13859
13866
|
break;
|
|
13860
13867
|
case exports.BroadcastOperationType.PAUSE_BROADCAST:
|
|
13861
|
-
(
|
|
13868
|
+
(_g = (_f = this.callbacks).onPause) === null || _g === void 0 ? void 0 : _g.call(_f);
|
|
13862
13869
|
this.logger.debug('Broadcast paused callback triggered');
|
|
13863
13870
|
break;
|
|
13864
13871
|
case exports.BroadcastOperationType.RESUME_BROADCAST:
|
|
13865
|
-
(
|
|
13872
|
+
(_j = (_h = this.callbacks).onResume) === null || _j === void 0 ? void 0 : _j.call(_h);
|
|
13866
13873
|
this.logger.debug('Broadcast resumed callback triggered');
|
|
13867
13874
|
break;
|
|
13868
13875
|
case exports.BroadcastOperationType.STOP_BROADCAST:
|
|
13869
|
-
(
|
|
13876
|
+
(_l = (_k = this.callbacks).onStop) === null || _l === void 0 ? void 0 : _l.call(_k);
|
|
13870
13877
|
this.logger.debug('Broadcast stopped callback triggered');
|
|
13871
13878
|
break;
|
|
13872
13879
|
}
|
|
@@ -13928,7 +13935,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
13928
13935
|
// 重置序号计数器
|
|
13929
13936
|
this.taskSequence = 0;
|
|
13930
13937
|
this.currentSendingSequence = 0;
|
|
13931
|
-
// 通知Unity
|
|
13938
|
+
// 通知Unity开始新任务(清空队列),这里不使用sendAsyncMessage,因为startBroadcast不需要等待完成,而是在任务播报完成后通过回调通知
|
|
13932
13939
|
this.sendMessage('StartBroadcast', {
|
|
13933
13940
|
callbackFun: this.uniqueCallbackName,
|
|
13934
13941
|
operationType: exports.BroadcastOperationType.START_BROADCAST,
|
|
@@ -14081,6 +14088,9 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14081
14088
|
* @description 获取当前播报服务的状态信息,包括队列状态
|
|
14082
14089
|
*/
|
|
14083
14090
|
BroadcastService.prototype.getStatus = function () {
|
|
14091
|
+
var pendingTasks = this.taskQueue.filter(function (t) {
|
|
14092
|
+
return t.status === BroadcastTaskStatus.PENDING;
|
|
14093
|
+
}).length;
|
|
14084
14094
|
var completedTasks = this.taskQueue.filter(function (t) {
|
|
14085
14095
|
return t.status === BroadcastTaskStatus.COMPLETED;
|
|
14086
14096
|
}).length;
|
|
@@ -14094,7 +14104,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14094
14104
|
return sum + t.pendingResponses.length;
|
|
14095
14105
|
}, 0);
|
|
14096
14106
|
var currentSendingSequence = this.currentSendingSequence;
|
|
14097
|
-
var isGeneratingAudio =
|
|
14107
|
+
var isGeneratingAudio = pendingTasks + requestingTasks > 0;
|
|
14098
14108
|
return {
|
|
14099
14109
|
isActive: this.isBroadcastingAudio || isGeneratingAudio,
|
|
14100
14110
|
// 是否正在播报音频或正在生成音频
|
|
@@ -14102,6 +14112,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14102
14112
|
hasReceivedAudio: this.hasReceivedAudio,
|
|
14103
14113
|
queueInfo: {
|
|
14104
14114
|
totalTasks: this.taskQueue.length,
|
|
14115
|
+
pendingTasks: pendingTasks,
|
|
14105
14116
|
requestingTasks: requestingTasks,
|
|
14106
14117
|
completedTasks: completedTasks,
|
|
14107
14118
|
failedTasks: failedTasks,
|
|
@@ -14135,7 +14146,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14135
14146
|
id: "broadcast_".concat(Date.now(), "_").concat(Math.random().toString(36).substring(2, 9)),
|
|
14136
14147
|
sequence: ++this.taskSequence,
|
|
14137
14148
|
params: params,
|
|
14138
|
-
status: BroadcastTaskStatus.
|
|
14149
|
+
status: BroadcastTaskStatus.PENDING,
|
|
14139
14150
|
controller: new AbortController(),
|
|
14140
14151
|
pendingResponses: [],
|
|
14141
14152
|
isGenerationComplete: false,
|
|
@@ -14150,53 +14161,67 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14150
14161
|
/**
|
|
14151
14162
|
* 添加任务到队列
|
|
14152
14163
|
* @param task - 播报任务
|
|
14153
|
-
* @description
|
|
14164
|
+
* @description 将任务添加到队列,只有当没有正在请求的任务时才开始请求(串行请求模式)
|
|
14154
14165
|
* @private
|
|
14155
14166
|
*/
|
|
14156
14167
|
BroadcastService.prototype.addTaskToQueue = function (task) {
|
|
14157
14168
|
this.taskQueue.push(task);
|
|
14158
14169
|
this.logger.debug('Task added to queue', {
|
|
14159
14170
|
taskId: task.id,
|
|
14171
|
+
params: task.params,
|
|
14160
14172
|
queueLength: this.taskQueue.length
|
|
14161
14173
|
});
|
|
14162
|
-
//
|
|
14163
|
-
this.
|
|
14174
|
+
// 检查是否有正在请求的任务
|
|
14175
|
+
var hasRequestingTask = this.taskQueue.some(function (t) {
|
|
14176
|
+
return t.status === BroadcastTaskStatus.REQUESTING;
|
|
14177
|
+
});
|
|
14178
|
+
// 只有当没有正在请求的任务时,才开始当前任务的请求
|
|
14179
|
+
if (!hasRequestingTask) {
|
|
14180
|
+
this.startTaskRequest(task);
|
|
14181
|
+
} else {
|
|
14182
|
+
this.logger.debug('Task queued, waiting for previous task to complete', {
|
|
14183
|
+
taskId: task.id,
|
|
14184
|
+
pendingTasks: this.taskQueue.filter(function (t) {
|
|
14185
|
+
return t.status === BroadcastTaskStatus.PENDING;
|
|
14186
|
+
}).length
|
|
14187
|
+
});
|
|
14188
|
+
}
|
|
14164
14189
|
// 开始处理队列
|
|
14165
|
-
this.
|
|
14190
|
+
this.processTaskQueue();
|
|
14166
14191
|
};
|
|
14167
14192
|
/**
|
|
14168
14193
|
* 处理队列
|
|
14169
|
-
* @description
|
|
14194
|
+
* @description 处理队列中的任务响应,按序号发送给unity播放
|
|
14170
14195
|
* @private
|
|
14171
14196
|
*/
|
|
14172
|
-
BroadcastService.prototype.
|
|
14197
|
+
BroadcastService.prototype.processTaskQueue = function () {
|
|
14173
14198
|
var _this = this;
|
|
14174
14199
|
// 启动队列处理定时器(如果尚未启动)
|
|
14175
14200
|
if (!this.queueProcessTimer) {
|
|
14176
14201
|
this.queueProcessTimer = setInterval(function () {
|
|
14177
|
-
_this.
|
|
14202
|
+
_this.processTaskQueueStep();
|
|
14178
14203
|
}, 100); // 每100ms检查一次队列状态
|
|
14179
14204
|
}
|
|
14180
14205
|
// 立即处理一次
|
|
14181
|
-
this.
|
|
14206
|
+
this.processTaskQueueStep();
|
|
14182
14207
|
};
|
|
14183
14208
|
/**
|
|
14184
14209
|
* 队列处理步骤
|
|
14185
|
-
* @description
|
|
14210
|
+
* @description 处理队列中的单个步骤,按序号发送给unity播放
|
|
14186
14211
|
* @private
|
|
14187
14212
|
*/
|
|
14188
|
-
BroadcastService.prototype.
|
|
14213
|
+
BroadcastService.prototype.processTaskQueueStep = function () {
|
|
14189
14214
|
var _this = this;
|
|
14190
|
-
//
|
|
14215
|
+
// 按序号找到下一个要处理的任务(只处理已开始请求的任务,排除 PENDING 状态)
|
|
14191
14216
|
var nextTask = this.taskQueue.find(function (task) {
|
|
14192
|
-
return task.sequence === _this.currentSendingSequence + 1 && task.pendingResponses.length > 0;
|
|
14217
|
+
return task.sequence === _this.currentSendingSequence + 1 && task.status !== BroadcastTaskStatus.PENDING && task.pendingResponses.length > 0;
|
|
14193
14218
|
});
|
|
14194
14219
|
if (nextTask) {
|
|
14195
14220
|
this.sendNextResponse(nextTask);
|
|
14196
14221
|
}
|
|
14197
|
-
//
|
|
14222
|
+
// 如果队列中没有剩余任务(排除待处理、已完成、失败和取消的任务),则停止定时器
|
|
14198
14223
|
var remainingTasks = this.taskQueue.filter(function (task) {
|
|
14199
|
-
return task.status !== BroadcastTaskStatus.COMPLETED && task.status !== BroadcastTaskStatus.FAILED && task.status !== BroadcastTaskStatus.CANCELLED;
|
|
14224
|
+
return task.status !== BroadcastTaskStatus.PENDING && task.status !== BroadcastTaskStatus.COMPLETED && task.status !== BroadcastTaskStatus.FAILED && task.status !== BroadcastTaskStatus.CANCELLED;
|
|
14200
14225
|
});
|
|
14201
14226
|
if (remainingTasks.length === 0) {
|
|
14202
14227
|
this.clearQueueProcessTimer();
|
|
@@ -14210,7 +14235,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14210
14235
|
*/
|
|
14211
14236
|
BroadcastService.prototype.startTaskRequest = function (task) {
|
|
14212
14237
|
return __awaiter(this, void 0, void 0, function () {
|
|
14213
|
-
var apiUrl, requestBody;
|
|
14238
|
+
var apiUrl, requestBody, sdkError;
|
|
14214
14239
|
var _this = this;
|
|
14215
14240
|
var _a;
|
|
14216
14241
|
return __generator(this, function (_b) {
|
|
@@ -14245,6 +14270,25 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14245
14270
|
body: JSON.stringify(requestBody),
|
|
14246
14271
|
signal: task.controller.signal,
|
|
14247
14272
|
openWhenHidden: true,
|
|
14273
|
+
/**
|
|
14274
|
+
* 连接建立时的回调,用于检查 HTTP 状态码
|
|
14275
|
+
* @param response - HTTP 响应对象
|
|
14276
|
+
* @throws {SDKError} 当 HTTP 状态码异常时抛出对应的 SDKError
|
|
14277
|
+
*/
|
|
14278
|
+
onopen: function onopen(response) {
|
|
14279
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
14280
|
+
var error;
|
|
14281
|
+
return __generator(this, function (_a) {
|
|
14282
|
+
// 检查 HTTP 状态码,处理 401 token 过期等异常
|
|
14283
|
+
if (!response.ok) {
|
|
14284
|
+
error = this.createHttpError(response.status, response.statusText, task.id);
|
|
14285
|
+
this.handleTaskError(task, error);
|
|
14286
|
+
throw error;
|
|
14287
|
+
}
|
|
14288
|
+
return [2 /*return*/];
|
|
14289
|
+
});
|
|
14290
|
+
});
|
|
14291
|
+
},
|
|
14248
14292
|
onmessage: function onmessage(event) {
|
|
14249
14293
|
_this.handleTaskResponse(task, event.data);
|
|
14250
14294
|
},
|
|
@@ -14252,12 +14296,15 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14252
14296
|
_this.handleTaskClose(task);
|
|
14253
14297
|
},
|
|
14254
14298
|
onerror: function onerror(error) {
|
|
14255
|
-
|
|
14256
|
-
|
|
14299
|
+
// 将所有异常统一转换为 SDKError
|
|
14300
|
+
var sdkError = _this.convertToSDKError(error, task.id);
|
|
14301
|
+
_this.handleTaskError(task, sdkError);
|
|
14302
|
+
throw sdkError;
|
|
14257
14303
|
}
|
|
14258
14304
|
});
|
|
14259
14305
|
} catch (error) {
|
|
14260
|
-
this.
|
|
14306
|
+
sdkError = this.convertToSDKError(error, task.id);
|
|
14307
|
+
this.handleTaskError(task, sdkError);
|
|
14261
14308
|
}
|
|
14262
14309
|
return [2 /*return*/];
|
|
14263
14310
|
});
|
|
@@ -14275,7 +14322,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14275
14322
|
var response = JSON.parse(data);
|
|
14276
14323
|
// 错误处理
|
|
14277
14324
|
if (response.code !== 0) {
|
|
14278
|
-
this.handleBroadcastError(response.code);
|
|
14325
|
+
this.handleBroadcastError(response.code, response.message);
|
|
14279
14326
|
return;
|
|
14280
14327
|
}
|
|
14281
14328
|
// 处理音频数据
|
|
@@ -14289,6 +14336,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14289
14336
|
task.pendingResponses.push(response);
|
|
14290
14337
|
this.logger.debug('Response added to task', {
|
|
14291
14338
|
taskId: task.id,
|
|
14339
|
+
response: response,
|
|
14292
14340
|
pendingCount: task.pendingResponses.length
|
|
14293
14341
|
});
|
|
14294
14342
|
// 检查是否完成
|
|
@@ -14301,13 +14349,13 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14301
14349
|
}
|
|
14302
14350
|
}
|
|
14303
14351
|
} catch (error) {
|
|
14304
|
-
this.handleTaskError(task, error);
|
|
14352
|
+
this.handleTaskError(task, new SDKError(exports.OperationErrorCode.OPERATION_FAILED, typeof error === 'string' ? error : error.message || '播报服务错误'));
|
|
14305
14353
|
}
|
|
14306
14354
|
};
|
|
14307
14355
|
/**
|
|
14308
|
-
*
|
|
14356
|
+
* 发送下一个响应给unity播放
|
|
14309
14357
|
* @param task - 播报任务
|
|
14310
|
-
* @description
|
|
14358
|
+
* @description 发送任务的响应数组中的第一个待发送响应到Unity(按顺序发送),发送后立即删除
|
|
14311
14359
|
* @private
|
|
14312
14360
|
*/
|
|
14313
14361
|
BroadcastService.prototype.sendNextResponse = function (task) {
|
|
@@ -14322,7 +14370,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14322
14370
|
remainingResponses: task.pendingResponses.length,
|
|
14323
14371
|
voiceUrl: (_a = response.data) === null || _a === void 0 ? void 0 : _a.voiceUrl
|
|
14324
14372
|
});
|
|
14325
|
-
// 发送响应到Unity
|
|
14373
|
+
// 发送响应到Unity,这里不使用sendAsyncMessage,因为appendBroadcast不需要等待完成,而是在任务播报完成后通过startBroadcast回调通知
|
|
14326
14374
|
this.sendMessage('AppendBroadcast', {
|
|
14327
14375
|
response: response,
|
|
14328
14376
|
callbackFun: this.uniqueCallbackName,
|
|
@@ -14340,7 +14388,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14340
14388
|
/**
|
|
14341
14389
|
* 处理任务关闭
|
|
14342
14390
|
* @param task - 播报任务
|
|
14343
|
-
* @description
|
|
14391
|
+
* @description 处理任务的流式连接关闭,并启动下一个待处理任务的请求
|
|
14344
14392
|
* @private
|
|
14345
14393
|
*/
|
|
14346
14394
|
BroadcastService.prototype.handleTaskClose = function (task) {
|
|
@@ -14351,20 +14399,26 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14351
14399
|
if (!task.isGenerationComplete && task.status === BroadcastTaskStatus.REQUESTING) {
|
|
14352
14400
|
task.isGenerationComplete = true;
|
|
14353
14401
|
}
|
|
14402
|
+
// 当前任务请求完成后(流断开后),启动下一个待处理任务的请求
|
|
14403
|
+
this.startNextPendingTask();
|
|
14354
14404
|
};
|
|
14355
14405
|
/**
|
|
14356
14406
|
* 处理任务错误
|
|
14357
14407
|
* @param task - 播报任务
|
|
14358
14408
|
* @param error - 错误对象
|
|
14359
|
-
* @description
|
|
14409
|
+
* @description 处理任务执行过程中的错误,防止重复触发错误回调,并启动下一个待处理任务
|
|
14360
14410
|
* @private
|
|
14361
14411
|
*/
|
|
14362
14412
|
BroadcastService.prototype.handleTaskError = function (task, error) {
|
|
14363
14413
|
var _a, _b;
|
|
14414
|
+
// 如果任务已经是失败或取消状态,不再重复处理,防止回调被多次触发
|
|
14415
|
+
if (task.status === BroadcastTaskStatus.FAILED || task.status === BroadcastTaskStatus.CANCELLED) {
|
|
14416
|
+
return;
|
|
14417
|
+
}
|
|
14364
14418
|
task.status = BroadcastTaskStatus.FAILED;
|
|
14365
14419
|
task.error = error;
|
|
14366
14420
|
this.logger.error("Task failed - ".concat(task.id), error);
|
|
14367
|
-
//
|
|
14421
|
+
// 触发错误回调(只触发一次)
|
|
14368
14422
|
(_b = (_a = this.callbacks).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
|
|
14369
14423
|
};
|
|
14370
14424
|
/**
|
|
@@ -14475,10 +14529,11 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14475
14529
|
/**
|
|
14476
14530
|
* 处理播报错误
|
|
14477
14531
|
* @param errorCode - 错误码
|
|
14532
|
+
* @param errorMessage - 错误消息
|
|
14478
14533
|
* @description 处理播报过程中的错误
|
|
14479
14534
|
* @private
|
|
14480
14535
|
*/
|
|
14481
|
-
BroadcastService.prototype.handleBroadcastError = function (errorCode) {
|
|
14536
|
+
BroadcastService.prototype.handleBroadcastError = function (errorCode, errorMessage) {
|
|
14482
14537
|
// 用户权益额度不存在错误码 14001
|
|
14483
14538
|
// 用户权益额度不足错误码 14002
|
|
14484
14539
|
// 用户权益额度冻结失败 14003
|
|
@@ -14493,10 +14548,32 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14493
14548
|
this.handleError(new SDKError(exports.OperationErrorCode.BROADCAST_EQUITY_FREEZE_FAILED, '用户权益额度冻结失败'));
|
|
14494
14549
|
break;
|
|
14495
14550
|
default:
|
|
14496
|
-
this.handleError(new SDKError(exports.OperationErrorCode.OPERATION_FAILED,
|
|
14551
|
+
this.handleError(new SDKError(exports.OperationErrorCode.OPERATION_FAILED, "".concat(errorMessage, "(").concat(errorCode, ")") || "\u64AD\u62A5\u670D\u52A1\u9519\u8BEF(".concat(errorCode, ")")));
|
|
14497
14552
|
break;
|
|
14498
14553
|
}
|
|
14499
14554
|
};
|
|
14555
|
+
/**
|
|
14556
|
+
* 启动下一个待处理任务的请求
|
|
14557
|
+
* @description 在当前任务请求完成或失败后,检查并启动下一个待处理任务
|
|
14558
|
+
* @private
|
|
14559
|
+
*/
|
|
14560
|
+
BroadcastService.prototype.startNextPendingTask = function () {
|
|
14561
|
+
// 查找下一个待处理的任务(按序号排序,取第一个 PENDING 状态的任务)
|
|
14562
|
+
var nextPendingTask = this.taskQueue.filter(function (t) {
|
|
14563
|
+
return t.status === BroadcastTaskStatus.PENDING;
|
|
14564
|
+
}).sort(function (a, b) {
|
|
14565
|
+
return a.sequence - b.sequence;
|
|
14566
|
+
})[0];
|
|
14567
|
+
if (nextPendingTask) {
|
|
14568
|
+
this.logger.debug('Starting next pending task', {
|
|
14569
|
+
taskId: nextPendingTask.id,
|
|
14570
|
+
sequence: nextPendingTask.sequence
|
|
14571
|
+
});
|
|
14572
|
+
this.startTaskRequest(nextPendingTask);
|
|
14573
|
+
} else {
|
|
14574
|
+
this.logger.debug('No pending tasks to start');
|
|
14575
|
+
}
|
|
14576
|
+
};
|
|
14500
14577
|
/**
|
|
14501
14578
|
* 清理队列处理定时器
|
|
14502
14579
|
* @description 清理队列处理定时器
|
|
@@ -14506,8 +14583,77 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14506
14583
|
if (this.queueProcessTimer) {
|
|
14507
14584
|
clearInterval(this.queueProcessTimer);
|
|
14508
14585
|
this.queueProcessTimer = null;
|
|
14586
|
+
this.logger.debug('Queue process timer cleared');
|
|
14509
14587
|
}
|
|
14510
14588
|
};
|
|
14589
|
+
/**
|
|
14590
|
+
* 根据 HTTP 状态码创建对应的 SDKError
|
|
14591
|
+
* @param status - HTTP 状态码
|
|
14592
|
+
* @param statusText - HTTP 状态文本
|
|
14593
|
+
* @param taskId - 任务 ID(用于日志记录)
|
|
14594
|
+
* @returns SDKError 实例
|
|
14595
|
+
* @description 将 HTTP 错误状态码映射为对应的 SDKError
|
|
14596
|
+
* @private
|
|
14597
|
+
*/
|
|
14598
|
+
BroadcastService.prototype.createHttpError = function (status, statusText, taskId) {
|
|
14599
|
+
this.logger.warn("HTTP error occurred - Task: ".concat(taskId, ", Status: ").concat(status), {
|
|
14600
|
+
status: status,
|
|
14601
|
+
statusText: statusText
|
|
14602
|
+
});
|
|
14603
|
+
switch (status) {
|
|
14604
|
+
case 401:
|
|
14605
|
+
// Token 过期或未授权
|
|
14606
|
+
return new SDKError(exports.NetworkErrorCode.UNAUTHORIZED, "Token \u5DF2\u8FC7\u671F\u6216\u65E0\u6548\uFF0C\u8BF7\u91CD\u65B0\u6388\u6743 (HTTP ".concat(status, ")"));
|
|
14607
|
+
case 403:
|
|
14608
|
+
// 禁止访问
|
|
14609
|
+
return new SDKError(exports.NetworkErrorCode.UNAUTHORIZED, "\u65E0\u6743\u9650\u8BBF\u95EE\u8BE5\u8D44\u6E90 (HTTP ".concat(status, ")"));
|
|
14610
|
+
case 404:
|
|
14611
|
+
// 资源不存在
|
|
14612
|
+
return new SDKError(exports.NetworkErrorCode.SERVER_ERROR, "\u8BF7\u6C42\u7684\u8D44\u6E90\u4E0D\u5B58\u5728 (HTTP ".concat(status, ")"));
|
|
14613
|
+
case 500:
|
|
14614
|
+
case 502:
|
|
14615
|
+
case 503:
|
|
14616
|
+
case 504:
|
|
14617
|
+
// 服务器错误
|
|
14618
|
+
return new SDKError(exports.NetworkErrorCode.SERVER_ERROR, "\u670D\u52A1\u5668\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5 (HTTP ".concat(status, ")"));
|
|
14619
|
+
default:
|
|
14620
|
+
// 其他 HTTP 错误
|
|
14621
|
+
return new SDKError(exports.NetworkErrorCode.CONNECTION_FAILED, "\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25: ".concat(statusText || 'Unknown Error', " (HTTP ").concat(status, ")"));
|
|
14622
|
+
}
|
|
14623
|
+
};
|
|
14624
|
+
/**
|
|
14625
|
+
* 将任意错误转换为 SDKError
|
|
14626
|
+
* @param error - 原始错误对象
|
|
14627
|
+
* @param taskId - 任务 ID(用于日志记录)
|
|
14628
|
+
* @returns SDKError 实例
|
|
14629
|
+
* @description 统一将各种类型的错误转换为 SDKError,便于上层统一处理
|
|
14630
|
+
* @private
|
|
14631
|
+
*/
|
|
14632
|
+
BroadcastService.prototype.convertToSDKError = function (error, taskId) {
|
|
14633
|
+
// 如果已经是 SDKError,直接返回
|
|
14634
|
+
if (error instanceof SDKError) {
|
|
14635
|
+
return error;
|
|
14636
|
+
}
|
|
14637
|
+
// 如果是普通 Error 对象
|
|
14638
|
+
if (error instanceof Error) {
|
|
14639
|
+
// 检查是否是网络相关的错误
|
|
14640
|
+
var errorMessage_1 = error.message.toLowerCase();
|
|
14641
|
+
if (errorMessage_1.includes('timeout') || errorMessage_1.includes('timed out')) {
|
|
14642
|
+
return new SDKError(exports.NetworkErrorCode.REQUEST_TIMEOUT, "\u8BF7\u6C42\u8D85\u65F6 - Task: ".concat(taskId), error);
|
|
14643
|
+
}
|
|
14644
|
+
if (errorMessage_1.includes('network') || errorMessage_1.includes('fetch') || errorMessage_1.includes('connection')) {
|
|
14645
|
+
return new SDKError(exports.NetworkErrorCode.CONNECTION_FAILED, "\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25 - Task: ".concat(taskId, ": ").concat(error.message), error);
|
|
14646
|
+
}
|
|
14647
|
+
if (errorMessage_1.includes('abort') || errorMessage_1.includes('cancel')) {
|
|
14648
|
+
return new SDKError(exports.OperationErrorCode.OPERATION_CANCELLED, "\u64CD\u4F5C\u5DF2\u53D6\u6D88 - Task: ".concat(taskId), error);
|
|
14649
|
+
}
|
|
14650
|
+
// 默认作为操作失败处理
|
|
14651
|
+
return new SDKError(exports.OperationErrorCode.OPERATION_FAILED, "\u64AD\u62A5\u4EFB\u52A1\u6267\u884C\u5931\u8D25 - Task: ".concat(taskId, ": ").concat(error.message), error);
|
|
14652
|
+
}
|
|
14653
|
+
// 如果是字符串或其他类型
|
|
14654
|
+
var errorMessage = String(error);
|
|
14655
|
+
return new SDKError(exports.OperationErrorCode.OPERATION_FAILED, "\u64AD\u62A5\u4EFB\u52A1\u6267\u884C\u5931\u8D25 - Task: ".concat(taskId, ": ").concat(errorMessage));
|
|
14656
|
+
};
|
|
14511
14657
|
return BroadcastService;
|
|
14512
14658
|
}(UnityBaseService);
|
|
14513
14659
|
|
|
@@ -14645,6 +14791,7 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14645
14791
|
*/
|
|
14646
14792
|
ZEEAvatarLoader.prototype.initGlobalConfig = function () {
|
|
14647
14793
|
var config = ConfigManager.getInstance().getConfig();
|
|
14794
|
+
var assetsFrom = config.assetsFrom;
|
|
14648
14795
|
var globalParams = {
|
|
14649
14796
|
token: config === null || config === void 0 ? void 0 : config.token,
|
|
14650
14797
|
apiBaseUrl: ConfigManager.getInstance().getApiBaseUrl(false),
|
|
@@ -14652,14 +14799,17 @@ var ZEEAvatarSDKLib = (function (exports) {
|
|
|
14652
14799
|
// 純AB包方案在SDK 2.1.0 中已弃用
|
|
14653
14800
|
// assetsUrl: config?.assetsUrl
|
|
14654
14801
|
};
|
|
14655
|
-
var assetModuleParams = {
|
|
14656
|
-
isZip: true,
|
|
14657
|
-
assetBundlePath: config === null || config === void 0 ? void 0 : config.assetsUrl
|
|
14658
|
-
};
|
|
14659
14802
|
this.unityInstance.SendMessage('AvatarSDK', 'InitializeConfig', JSON.stringify(globalParams));
|
|
14660
|
-
this.unityInstance.SendMessage('AvatarSDK', 'InitAssetBundleModule', JSON.stringify(assetModuleParams));
|
|
14661
14803
|
console.warn('[ Send Unity message ]: AvatarSDK.InitializeConfig', globalParams);
|
|
14662
|
-
|
|
14804
|
+
//
|
|
14805
|
+
if (assetsFrom !== 'cloud') {
|
|
14806
|
+
var assetModuleParams = {
|
|
14807
|
+
isZip: true,
|
|
14808
|
+
assetBundlePath: config === null || config === void 0 ? void 0 : config.assetsUrl
|
|
14809
|
+
};
|
|
14810
|
+
this.unityInstance.SendMessage('AvatarSDK', 'InitAssetBundleModule', JSON.stringify(assetModuleParams));
|
|
14811
|
+
console.warn('[ Send Unity message ]: AvatarSDK.InitAssetBundleModule', assetModuleParams);
|
|
14812
|
+
}
|
|
14663
14813
|
};
|
|
14664
14814
|
return ZEEAvatarLoader;
|
|
14665
14815
|
}();
|