diff --git a/server/packages/sdk/src/services/base.ts b/server/packages/sdk/src/services/base.ts index 67fca5af..ddbab219 100644 --- a/server/packages/sdk/src/services/base.ts +++ b/server/packages/sdk/src/services/base.ts @@ -313,6 +313,16 @@ export abstract class TcService extends Service { }); } + /** + * 注册可用的action请求 + * + * 传入检查函数, 函数的返回值作为结果 + */ + registerAvailableAction(checkFn: () => boolean) { + this.registerAction('available', checkFn); + this.registerAuthWhitelist(['/available']); + } + /** * 注册面板功能特性,用于在服务端基础设施开放部分能力 * @param panelFeature 面板功能 diff --git a/server/plugins/com.msgbyte.agora/services/agora.service.ts b/server/plugins/com.msgbyte.agora/services/agora.service.ts index 1cb0db2c..bc7c0746 100644 --- a/server/plugins/com.msgbyte.agora/services/agora.service.ts +++ b/server/plugins/com.msgbyte.agora/services/agora.service.ts @@ -76,13 +76,26 @@ class AgoraService extends TcService { return process.env.AGORA_CUSTOMER_SECRET; } - onInit() { + /** + * 返回服务是否可用 + */ + get serverAvailable(): boolean { if ( - !this.serverAppId || - !this.serverAppCertificate || - !this.serverCustomerKey || - !this.serverCustomerSecret + this.serverAppId && + this.serverAppCertificate && + this.serverCustomerKey && + this.serverCustomerSecret ) { + return true; + } + + return false; + } + + onInit() { + this.registerAvailableAction(() => this.serverAvailable); + + if (!this.serverAvailable) { console.warn( '声网服务启动失败, 缺少必要的环境变量: AGORA_APP_ID, AGORA_APP_CERT, AGORA_CUSTOMER_KEY, AGORA_CUSTOMER_SECRET' ); diff --git a/server/plugins/com.msgbyte.getui/services/getui.service.ts b/server/plugins/com.msgbyte.getui/services/getui.service.ts index a9a6f7b1..29bfbe5d 100644 --- a/server/plugins/com.msgbyte.getui/services/getui.service.ts +++ b/server/plugins/com.msgbyte.getui/services/getui.service.ts @@ -32,6 +32,8 @@ class GetuiService extends TcService { } onInit() { + this.registerAvailableAction(() => this.getuiAvailable); + if (!this.getuiAvailable) { console.warn( '[plugin:com.msgbyte.getui] require env: GETUI_APPID, GETUI_APPKEY, GETUI_MASTERSECRET' diff --git a/server/plugins/com.msgbyte.meeting/services/meeting.service.dev.ts b/server/plugins/com.msgbyte.meeting/services/meeting.service.dev.ts index 7b26f5b5..23782442 100644 --- a/server/plugins/com.msgbyte.meeting/services/meeting.service.dev.ts +++ b/server/plugins/com.msgbyte.meeting/services/meeting.service.dev.ts @@ -20,7 +20,7 @@ class MeetingService extends TcService { onInit() { // this.registerLocalDb(require('../models/meeting').default); - this.registerAction('available', this.available); + this.registerAvailableAction(() => Boolean(this.tailchatMeetingUrl)); if (!isValidStr(this.tailchatMeetingUrl)) { return; @@ -41,10 +41,6 @@ class MeetingService extends TcService { ); } - available(ctx: TcContext) { - return Boolean(this.tailchatMeetingUrl); - } - /** * 获取连接地址 */