From 58534a3db64e6c94a8559ef8dfa331c5707f4f17 Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Sat, 11 May 2024 09:03:29 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E4=BF=A1=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taoyao/media/build-profile.json5 | 2 +- .../taoyao/media/src/main/cpp/bind.cpp | 25 ++++++++++--------- .../main/cpp/types/libtaoyao/oh-package.json5 | 6 ++--- .../media/src/main/ets/taoyao/Setting.ets | 16 +++++++++--- .../src/main/ets/taoyao/TaoyaoSignal.ets | 24 +++++++++++++----- .../resources/rawfile/{ca => }/cacert.pem | 0 6 files changed, 48 insertions(+), 25 deletions(-) rename taoyao-client-openharmony/taoyao/media/src/main/resources/rawfile/{ca => }/cacert.pem (100%) diff --git a/taoyao-client-openharmony/taoyao/media/build-profile.json5 b/taoyao-client-openharmony/taoyao/media/build-profile.json5 index b5666b8..6b01033 100644 --- a/taoyao-client-openharmony/taoyao/media/build-profile.json5 +++ b/taoyao-client-openharmony/taoyao/media/build-profile.json5 @@ -13,7 +13,7 @@ // "cppFlags" : "-D_LIBCPP_STD_VER=17", // "arguments" : "-DOHOS_STL=c++_static", // "arguments" : "-DOHOS_STL=c++_shared", -// "abiFilters": [ "arm64-v8a" ] + // "abiFilters": [ "arm64-v8a" ] "abiFilters": [ "armeabi-v7a" ] } }, diff --git a/taoyao-client-openharmony/taoyao/media/src/main/cpp/bind.cpp b/taoyao-client-openharmony/taoyao/media/src/main/cpp/bind.cpp index 4f178af..d67ec5b 100644 --- a/taoyao-client-openharmony/taoyao/media/src/main/cpp/bind.cpp +++ b/taoyao-client-openharmony/taoyao/media/src/main/cpp/bind.cpp @@ -40,9 +40,10 @@ static std::mutex taoyaoMutex; napi_value args[size] = { nullptr }; \ napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); \ size_t length; \ - char chars[2048]; \ + char chars[2048] = { 0 }; \ napi_get_value_string_utf8(env, args[0], chars, sizeof(chars), &length); \ - nlohmann::json json = nlohmann::json::parse(chars); \ + OH_LOG_INFO(LOG_APP, "解析JSON:%s", chars); \ + nlohmann::json json = nlohmann::json::parse(chars, chars + length); \ nlohmann::json body = json["body"]; #endif @@ -163,15 +164,15 @@ static napi_value init(napi_env env, napi_callback_info info) { napi_create_reference(env, args[1], 1, &acgist::pushRef); napi_create_reference(env, args[2], 1, &acgist::requestRef); printSupportCodec(); - acgist::clientId = json["clientId"]; - acgist::name = json["name"]; - OH_LOG_INFO(LOG_APP, "加载libtaoyao"); - std::string version = mediasoupclient::Version(); - OH_LOG_INFO(LOG_APP, "加载MediasoupClient:%s", version.data()); - mediasoupclient::Initialize(); - OH_LOG_INFO(LOG_APP, "加载媒体功能"); - mediaManager = new MediaManager(); - mediaManager->init(); +// acgist::clientId = json["clientId"]; +// acgist::name = json["name"]; +// OH_LOG_INFO(LOG_APP, "加载libtaoyao"); +// std::string version = mediasoupclient::Version(); +// OH_LOG_INFO(LOG_APP, "加载MediasoupClient:%s", version.data()); +// mediasoupclient::Initialize(); +// OH_LOG_INFO(LOG_APP, "加载媒体功能"); +// mediaManager = new MediaManager(); +// mediaManager->init(); napi_create_int32(env, 0, &ret); return ret; } @@ -465,7 +466,7 @@ static napi_value Init(napi_env env, napi_value exports) { { "mediaProducerPause", nullptr, acgist::mediaProducerPause, nullptr, nullptr, nullptr, napi_default, nullptr }, { "mediaProducerResume", nullptr, acgist::mediaProducerResume, nullptr, nullptr, nullptr, napi_default, nullptr }, }; - napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc); + napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); return exports; } EXTERN_C_END diff --git a/taoyao-client-openharmony/taoyao/media/src/main/cpp/types/libtaoyao/oh-package.json5 b/taoyao-client-openharmony/taoyao/media/src/main/cpp/types/libtaoyao/oh-package.json5 index c74a3cd..5b0fa53 100644 --- a/taoyao-client-openharmony/taoyao/media/src/main/cpp/types/libtaoyao/oh-package.json5 +++ b/taoyao-client-openharmony/taoyao/media/src/main/cpp/types/libtaoyao/oh-package.json5 @@ -1,6 +1,6 @@ { - "name": "libtaoyao.so", - "types": "./index.d.ts", - "version": "1.0.0", + "name" : "libtaoyao.so", + "types" : "./index.d.ts", + "version" : "1.0.0", "description": "桃夭媒体依赖" } \ No newline at end of file diff --git a/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/Setting.ets b/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/Setting.ets index cb197a6..d57fa31 100644 --- a/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/Setting.ets +++ b/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/Setting.ets @@ -4,6 +4,9 @@ * @author acgist */ +import fs from '@ohos.file.fs'; +import resourceManager from '@ohos.resourceManager'; + class Signal { // 终端名称 @@ -22,19 +25,26 @@ class Signal { class Setting { // 信令地址 - signalAddress: string = "wss://192.168.8.57:8888/websocket.signal"; - // signalAddress: string = "wss://192.168.1.100:8888/websocket.signal"; + // signalAddress: string = "wss://192.168.8.57:8888/websocket.signal"; + signalAddress: string = "wss://192.168.1.100:8888/websocket.signal"; // 信令版本 version: string = "1.0.0"; // 信令配置 signal : Signal = new Signal(); // CA证书 - caPath : string = getContext(this) + "/cacert.pem"; + caPath : string = "/cacert.pem"; }; const setting = new Setting(); +// 拷贝证书 +const caPath = getContext(this).filesDir + setting.caPath; +const caFile = fs.createRandomAccessFileSync(caPath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); +const caText = getContext(this).resourceManager.getRawFileContentSync("cacert.pem").buffer; +caFile.writeSync(caText); +caFile.close(); + export { setting } diff --git a/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/TaoyaoSignal.ets b/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/TaoyaoSignal.ets index d1fc18a..f0b1b04 100644 --- a/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/TaoyaoSignal.ets +++ b/taoyao-client-openharmony/taoyao/media/src/main/ets/taoyao/TaoyaoSignal.ets @@ -32,10 +32,12 @@ class TaoyaoSignal { clientIndex: number = 99999; init() { - taoyaoModule.init(JSON.stringify(setting.signal), signal.nativePush, signal.nativeRequest); + hilog.info(0x0000, "TaoyaoSignal", "加载系统"); + taoyaoModule.init(JSON.stringify(setting.signal), this.nativePush, this.nativeRequest); } shutdown() { + hilog.info(0x0000, "TaoyaoSignal", "卸载系统"); taoyaoModule.shutdown(JSON.stringify(setting.signal)); } @@ -43,9 +45,13 @@ class TaoyaoSignal { * 连接信令 */ connect() { + if(this.connected) { + return; + } if(this.socket) { hilog.info(0x0000, "TaoyaoSignal", "信令已经连接关闭旧的连接:%{public}s", setting.signalAddress); this.socket.close(); + this.socket = null; } this.connected = false; this.socket = webSocket.createWebSocket(); @@ -65,17 +71,21 @@ class TaoyaoSignal { }); this.socket.on("close", (err: BusinessError, value: Object) => { hilog.error(0x0000, "TaoyaoSignal", "关闭信令:%{public}s %{public}s %{public}s", setting.signalAddress, JSON.stringify(value), JSON.stringify(err)); + this.connected = false; this.reconnect(); }); this.socket.on("error", (err: BusinessError) => { hilog.error(0x0000, "TaoyaoSignal", "信令异常:%{public}s %{public}s", setting.signalAddress, JSON.stringify(err)); + this.connected = false; this.reconnect(); }); // 配置CA证书 + const caPath = getContext(this).filesDir + setting.caPath; + hilog.info(0x0000, "TaoyaoSignal", "配置证书:%{public}s", caPath); const options: webSocket.WebSocketRequestOptions = { - caPath: setting.caPath + caPath: caPath }; - hilog.info(0x0000, "TaoyaoSignal", "连接信令:%{public}s %{public}s", setting.signalAddress, setting.caPath); + hilog.info(0x0000, "TaoyaoSignal", "连接信令:%{public}s", setting.signalAddress); this.socket.connect(setting.signalAddress, options, (err: BusinessError, value: boolean) => { hilog.info(0x0000, "TaoyaoSignal", "信令连接:%{public}s %{public}s %{public}s", setting.signalAddress, JSON.stringify(value), JSON.stringify(err)); }); @@ -102,6 +112,11 @@ class TaoyaoSignal { this.connected = false; if(this.socket) { this.socket.close(); + this.socket = null; + } + if(this.heartbeatTimer) { + clearInterval(this.heartbeatTimer); + this.heartbeatTimer = 0; } } @@ -329,9 +344,6 @@ class TaoyaoSignal { const signal = new TaoyaoSignal(); -// 加载系统 -taoyaoModule.init(JSON.stringify(setting.signal), signal.nativePush, signal.nativeRequest); - export { signal } diff --git a/taoyao-client-openharmony/taoyao/media/src/main/resources/rawfile/ca/cacert.pem b/taoyao-client-openharmony/taoyao/media/src/main/resources/rawfile/cacert.pem similarity index 100% rename from taoyao-client-openharmony/taoyao/media/src/main/resources/rawfile/ca/cacert.pem rename to taoyao-client-openharmony/taoyao/media/src/main/resources/rawfile/cacert.pem