From 0cb61bcf85d120a53184a85755834f00316bca22 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 4 Apr 2023 18:01:59 +0800 Subject: [PATCH] feat: add common service available check --- server/packages/sdk/src/services/base.ts | 10 ++++++++ .../services/agora.service.ts | 23 +++++++++++++++---- .../services/getui.service.ts | 2 ++ .../services/meeting.service.dev.ts | 6 +---- 4 files changed, 31 insertions(+), 10 deletions(-) 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); - } - /** * 获取连接地址 */