[*] 配置优化

This commit is contained in:
acgist
2023-07-25 08:50:28 +08:00
parent 4fbfd6a29e
commit d3a0767ec9
7 changed files with 102 additions and 36 deletions

28
taoyao-client-media/.env Normal file
View File

@@ -0,0 +1,28 @@
# 服务名称
NAME=taoyao-client-media
# 终端ID
CLIENT_ID=taoyao-client-media
# 终端名称
CLIENT_NAME=桃夭媒体服务
# 信令版本
SIGNAL_VERSION=1.0.0
# 信令地址
SIGNAL_HOST=127.0.0.1
# 信令端口
SIGNAL_PORT=8888
# 信令帐号
SIGNAL_USERNAME=taoyao
# 信令密码
SIGNAL_PASSWORD=taoyao
# 工作线程数量(生产环境不要配置)
MEDIASOUP_WORKER_SIZE=2
# Mediasoup最小端口
MEDIASOUP_MIN_PORT=40000
# Mediasoup最大端口
MEDIASOUP_MAX_PORT=49999
# Mediasoup监听地址
MEDIASOUP_LISTEN_IP=0.0.0.0
# Mediasoup监听端口起始端口
MEDIASOUP_LISTEN_PORT=44444
# Mediasoup声明地址不能配置环回地址
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,14 @@
NAME=taoyao-client-media-a
CLIENT_ID=taoyao-client-media-a
CLIENT_NAME=桃夭媒体服务A
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_WORKER_SIZE=2
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=41111
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,14 @@
NAME=taoyao-client-media-b
CLIENT_ID=taoyao-client-media-b
CLIENT_NAME=桃夭媒体服务B
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_WORKER_SIZE=2
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=42222
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,13 @@
NAME=taoyao-client-media
CLIENT_ID=taoyao-client-media
CLIENT_NAME=桃夭媒体服务
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=44444
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -7,11 +7,15 @@
"homepage" : "https://gitee.com/acgist/taoyao",
"description": "taoyao client media",
"scripts": {
"dev": "node src/Server.js",
"prd": "node src/Server.js"
"dev" : "node src/Server.js",
"prd" : "cross-env NODE_ENV=prd node src/Server.js",
"node-a": "cross-env NODE_ENV=node-a node src/Server.js",
"node-b": "cross-env NODE_ENV=node-b node src/Server.js"
},
"dependencies": {
"ws" : "^8.12.0",
"dotenv" : "^16.3.1",
"cross-env": "^7.0.3",
"mediasoup": "^3.11.10"
}
}

View File

@@ -1,38 +1,38 @@
const os = require("os");
const dotenv = require("dotenv");
/**
* 桃夭媒体服务地址
* 注意这里即使是本机也不能配置127.0.0.1
*/
const defaultTaoyaoHost = "192.168.1.110";
if(process.env.NODE_ENV) {
dotenv.config({ path: `.env.${process.env.NODE_ENV}` });
} else {
dotenv.config({ path: `.env` });
}
/**
* 配置
*/
module.exports = {
// 服务名称
name: "taoyao-client-media",
name: process.env.NAME || "taoyao-client-media",
// 信令配置
signal: {
// 信令版本
version : "1.0.0",
// 终端标识
clientId : "taoyao-client-media",
version : process.env.SIGNAL_VERSION || "1.0.0",
// 终端ID
clientId : process.env.CLIENT_ID || "taoyao-client-media",
// 终端类型
clientType: "MEDIA",
// 终端名称
name : "桃夭媒体服务",
name : process.env.CLIENT_NAME || "桃夭媒体服务",
// 信令地址
host : "127.0.0.1",
// host : "192.168.1.100",
host : process.env.SIGNAL_HOST || "127.0.0.1",
// 信令端口
port : 8888,
port : process.env.SIGNAL_PORT || 8888,
// 信令协议
scheme : "wss",
// 信令帐号
username : "taoyao",
username : process.env.SIGNAL_USERNAME || "taoyao",
// 信令密码
password : "taoyao",
password : process.env.SIGNAL_PASSWORD || "taoyao",
},
// 录像配置
record: {
@@ -44,7 +44,7 @@ module.exports = {
// Mediasoup
mediasoup: {
// Worker数量
workerSize: Object.keys(os.cpus()).length,
workerSize: process.env.MEDIASOUP_WORKER_SIZE || Object.keys(os.cpus()).length,
// Worker配置https://mediasoup.org/documentation/v3/mediasoup/api/#WorkerSettings
workerSettings: {
// 日志标记
@@ -64,7 +64,7 @@ module.exports = {
"simulcast",
],
// 日志级别debug | warn | error | none
logLevel: "warn",
logLevel : "warn",
// RTP端口范围
rtcMinPort: process.env.MEDIASOUP_MIN_PORT || 40000,
rtcMaxPort: process.env.MEDIASOUP_MAX_PORT || 49999,
@@ -133,15 +133,15 @@ module.exports = {
listenInfos: [
{
protocol : "udp",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : process.env.MEDIASOUP_LISTEN_PORT || 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
},
{
protocol : "tcp",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : process.env.MEDIASOUP_LISTEN_PORT || 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
},
],
},
@@ -150,7 +150,7 @@ module.exports = {
listenIps: [
{
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
},
],
initialAvailableOutgoingBitrate: 1000000,
@@ -162,16 +162,9 @@ module.exports = {
plainTransportOptions: {
listenIp: {
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
},
maxSctpMessageSize: 262144,
},
},
};
/**
* PipeTransport : RTP(router)
* PlainTransport : RTP
* DirectTransport: NodeJS
* WebRtcTransport: WebRTC
*/

View File

@@ -17,7 +17,7 @@ const taoyao = new Taoyao(mediasoupWorkers);
*/
async function buildMediasoupWorkers() {
mediasoup.observer.on("newworker", (worker) => {
console.info("mediasoup newworker", worker);
console.info("mediasoup newworker", worker.pid);
});
const { workerSize } = config.mediasoup;
console.info("工作线程数量", workerSize);
@@ -46,7 +46,7 @@ async function buildMediasoupWorkers() {
// 创建WebRTC服务
const webRtcServerOptions = JSON.parse(JSON.stringify(config.mediasoup.webRtcServerOptions));
for (const listenInfos of webRtcServerOptions.listenInfos) {
listenInfos.port = listenInfos.port + mediasoupWorkers.length;
listenInfos.port = Number(listenInfos.port) + mediasoupWorkers.length;
}
const webRtcServer = await worker.createWebRtcServer(webRtcServerOptions);
// 监听事件