[*] 日常优化

This commit is contained in:
acgist
2023-06-20 07:54:12 +08:00
parent 3b232a1c3f
commit 5a7deafea9
7 changed files with 68 additions and 48 deletions

View File

@@ -28,6 +28,15 @@
* 排版优化:优化顺序 * 排版优化:优化顺序
* 代码优化:逻辑调整、性能优化、安全优化、增强稳定性 * 代码优化:逻辑调整、性能优化、安全优化、增强稳定性
## Mediasoup功能集成
持续集成`mediasoup`功能:
* 上次集成`mediasoup-demo`日期:`2023-06-19`
* 上次集成`libmediasoupclient`日期:`2023-06-19`
> `mediasoup-demo`包含`mediasoup`和`mediasoup-client`
## 计划任务 ## 计划任务
* E2E * E2E
@@ -44,4 +53,3 @@
* 浏览器WebRTC监控页面关闭`chrome://webrtc-internals/` * 浏览器WebRTC监控页面关闭`chrome://webrtc-internals/`
## 完成任务 ## 完成任务

View File

@@ -24,7 +24,6 @@ module.exports = {
// 信令地址 // 信令地址
host: "127.0.0.1", host: "127.0.0.1",
// host: "192.168.1.100", // host: "192.168.1.100",
// host: "192.168.8.100",
// 信令端口 // 信令端口
port: 8888, port: 8888,
// 信令协议 // 信令协议

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env node #!/usr/bin/env node
const config = require("./Config"); const config = require("./Config");
const mediasoup = require("mediasoup"); const mediasoup = require("mediasoup");
const { Taoyao, signalChannel } = require("./Taoyao"); const { Taoyao, signalChannel } = require("./Taoyao");
@@ -9,66 +9,70 @@ process.title = config.name;
// 禁止校验无效证书 // 禁止校验无效证书
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
// Mediasoup Worker列表 // 工作线程
const mediasoupWorkers = []; const mediasoupWorkers = [];
// 桃夭 // 桃夭信令
const taoyao = new Taoyao(mediasoupWorkers); const taoyao = new Taoyao(mediasoupWorkers);
/** /**
* 创建Mediasoup Worker列表 * 创建工作线程
*/ */
async function buildMediasoupWorkers() { async function buildMediasoupWorkers() {
// 监听事件 mediasoup.observer.on("newworker", (worker) => {
// mediasoup.observer.on("newworker", fn(worker)); console.info("mediasoup newworker", worker);
});
const { workerSize } = config.mediasoup; const { workerSize } = config.mediasoup;
console.info("创建Mediasoup Worker数量", workerSize); console.info("工作线程数量", workerSize);
for (let index = 0; index < workerSize; index++) { for (let index = 0; index < workerSize; index++) {
// 创建工作线程
const worker = await mediasoup.createWorker({ const worker = await mediasoup.createWorker({
logTags: config.mediasoup.workerSettings.logTags, logTags : config.mediasoup.workerSettings.logTags,
logLevel: config.mediasoup.workerSettings.logLevel, logLevel : config.mediasoup.workerSettings.logLevel,
rtcMinPort: Number(config.mediasoup.workerSettings.rtcMinPort), rtcMinPort: Number(config.mediasoup.workerSettings.rtcMinPort),
rtcMaxPort: Number(config.mediasoup.workerSettings.rtcMaxPort), rtcMaxPort: Number(config.mediasoup.workerSettings.rtcMaxPort),
}); });
// 配置WebRTC服务 // 监听事件
const webRtcServerOptions = JSON.parse(
JSON.stringify(config.mediasoup.webRtcServerOptions)
);
for (const listenInfo of webRtcServerOptions.listenInfos) {
listenInfo.port = listenInfo.port + mediasoupWorkers.length;
}
const webRtcServer = await worker.createWebRtcServer(webRtcServerOptions);
worker.appData.webRtcServer = webRtcServer;
mediasoupWorkers.push(worker);
worker.on("died", (error) => { worker.on("died", (error) => {
console.warn("worker died", worker.pid, error); // 正常情况不会出现
setTimeout(() => process.exit(1), 2000); console.error("worker died", worker.pid, error);
}); });
worker.observer.on("close", () => { worker.observer.on("close", () => {
console.info("worker close", worker.pid); console.debug("worker close", worker.pid);
}); });
// worker.observer.on("newrouter", (router) => { worker.observer.on("newrouter", (router) => {
// console.info("worker newrouter", worker.pid, router.id); console.debug("worker newrouter", worker.pid, router.id);
// }); });
// worker.observer.on("newwebrtcserver", (webRtcServer) => { worker.observer.on("newwebrtcserver", (webRtcServer) => {
// console.info("worker newwebrtcserver", worker.pid, webRtcServer.id); console.debug("worker newwebrtcserver", worker.pid, webRtcServer.id);
// }); });
// webRtcServer.on("workerclose", () => { // 创建WebRTC服务
// console.info("webRtcServer workerclose", worker.pid, webRtcServer.id); const webRtcServerOptions = JSON.parse(JSON.stringify(config.mediasoup.webRtcServerOptions));
// }); for (const listenInfos of webRtcServerOptions.listenInfos) {
// webRtcServer.observer.on("close", () => { listenInfos.port = listenInfos.port + mediasoupWorkers.length;
// console.info("webRtcServer close", worker.pid, webRtcServer.id); }
// }); const webRtcServer = await worker.createWebRtcServer(webRtcServerOptions);
// webRtcServer.observer.on("webrtctransporthandled", (webRtcTransport) => { // 监听事件
// console.info("webRtcServer webrtctransporthandled", worker.pid, webRtcServer.id, webRtcTransport.id); webRtcServer.on("workerclose", () => {
// }); console.debug("webRtcServer workerclose", worker.pid, webRtcServer.id);
// webRtcServer.observer.on("webrtctransportunhandled", (webRtcTransport) => { });
// console.info("webRtcServer webrtctransportunhandled", worker.pid, webRtcServer.id, webRtcTransport.id); webRtcServer.observer.on("close", () => {
// }); console.debug("webRtcServer close", worker.pid, webRtcServer.id);
});
webRtcServer.observer.on("webrtctransporthandled", (webRtcTransport) => {
console.debug("webRtcServer webrtctransporthandled", worker.pid, webRtcServer.id, webRtcTransport.id);
});
webRtcServer.observer.on("webrtctransportunhandled", (webRtcTransport) => {
console.debug("webRtcServer webrtctransportunhandled", worker.pid, webRtcServer.id, webRtcTransport.id);
});
// 配置WebRTC服务
worker.appData.webRtcServer = webRtcServer;
// 添加工作线程
mediasoupWorkers.push(worker);
} }
} }
/** /**
* 连接信令服务 * 连接信令
*/ */
async function connectSignalServer() { async function connectSignalServer() {
signalChannel.taoyao = taoyao; signalChannel.taoyao = taoyao;
@@ -85,10 +89,10 @@ async function main() {
:: https://gitee.com/acgist/taoyao :: https://gitee.com/acgist/taoyao
`); `);
console.info("开始启动", config.name); console.info("开始启动", config.name);
await buildMediasoupWorkers(); await buildMediasoupWorkers();
await connectSignalServer(); await connectSignalServer();
console.info("启动完成", config.name); console.info("启动完成", config.name);
} }
main(); main();

View File

@@ -1,8 +1,7 @@
const fs = require("fs"); const fs = require("fs");
const config = require("./Config.js"); const config = require("./Config");
const process = require("child_process"); const process = require("child_process");
const WebSocket = require("ws"); const WebSocket = require("ws");
const { trace } = require("console");
/** /**
* 信令协议 * 信令协议

View File

@@ -56,6 +56,14 @@ const defaultKsvcEncodings = [{ scalabilityMode: "S3T3_KEY" }];
/** /**
* simulcast默认配置 * simulcast默认配置
* TODOupdate
* https://gitee.com/acgist/mediasoup-demo/commit/090c82920d1b8015d457e4fafbb06607cb232885
* https://gitee.com/acgist/mediasoup-demo/commit/e4f70da0c69226b997d174c477d82f8dbb997e91
* https://gitee.com/acgist/mediasoup-demo/commit/2c67601d0a231bf901242c8e14cdd0d1ba39f3a4
* https://gitee.com/acgist/mediasoup-demo/commit/b9f3f28d2eab314b95392fa698d518177d5ad767
* https://gitee.com/acgist/mediasoup-demo/commit/1c59132ca926a6f9ca0c5c2bb155fac58eed9b06
* https://gitee.com/acgist/mediasoup-demo/commit/d15a859306e1ba5d031cde90d02593e095719cbc
* https://gitee.com/acgist/mediasoup-demo/commit/13cf71cc608690ff96ec12e6d3f1262b40c4d8f3
*/ */
const defaultSimulcastEncodings = [ const defaultSimulcastEncodings = [
{ scaleResolutionDownBy: 4, maxBitrate: 500000, scalabilityMode: "S1T2" }, { scaleResolutionDownBy: 4, maxBitrate: 500000, scalabilityMode: "S1T2" },

View File

@@ -1976,6 +1976,8 @@ class Taoyao extends RemoteClient {
opusStereo: 1, opusStereo: 1,
opusDtx: 1, opusDtx: 1,
}, },
// TODOopus
// https://gitee.com/acgist/mediasoup-demo/commit/1cab7cb245dc77b7f952a282290fcea8c9841d6e
// { // {
// opusStereo : true, // opusStereo : true,
// opusDtx : true, // opusDtx : true,