mediasoup udp端口分配策略

mediasoup-worker多进程启动时,rtcMinPort/rtcMaxPort可以使用相同的配置。

for (let i = 0; i < numWorkers; i++) {

let worker = await mediasoup.createWorker({

logLevel: config.mediasoup.worker.logLevel,

logTags: config.mediasoup.worker.logTags,

rtcMinPort: minPort,

rtcMaxPort: maxPort

})

}

如何避免port冲突呢?答案是mediasoup的node主进程来处理的。

async function createWorker({ logLevel = 'error', logTags, rtcMinPort = 10000, rtcMaxPort = 59999, dtlsCertificateFile, dtlsPrivateKeyFile, libwebrtcFieldTrials, appData } = {}) {

const worker = new Worker_1.Worker({

logLevel,

logTags,

rtcMinPort,

rtcMaxPort,

dtlsCertificateFile,

dtlsPrivateKeyFile,

libwebrtcFieldTrials,

appData

});

return new Promise((resolve, reject) => {

worker.on('@success', () => {

observer.safeEmit('newworker', worker);

resolve(worker);

});

worker.on('@failure', reject);

});

}

class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {

// mediasoup-worker child process. mediasoup-worker是node.js的子进程。

// const child_process_1 = require("child_process"); //

#child;

let spawnBin = workerBin;

let spawnArgs = \[\];

if (typeof rtcMinPort === 'number' && !Number.isNaN(rtcMinPort)) {

spawnArgs.push(`--rtcMinPort=${rtcMinPort}`);

}

if (typeof rtcMaxPort === 'number' && !Number.isNaN(rtcMaxPort)) {

spawnArgs.push(`--rtcMaxPort=${rtcMaxPort}`);

}

spawnArgs.join(' '));

this.#child = (0, child_process_1.spawn)(

spawnBin,

spawnArgs,

}

//这个webrtcServer是属于node.js的

async createWebRtcServer({ listenInfos, appData }) {

const webRtcServer = new WebRtcServer_1.WebRtcServer({

internal: { webRtcServerId: reqData.webRtcServerId },

channel: this.#channel,

appData

});

this.#webRtcServers.add(webRtcServer);

return webRtcServer;

}

}

node.js的webRtcServer是c++ mediasoup-worker的封装。

关于RTP port,包括组成medsoup-cluster的pipeToRemoteRouter的RTP转发port,

是由node.js主进程统一管理使用的,在各个子进程间不会有冲突。

相关推荐
酉鬼女又兒1 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
森G2 天前
65、UDP协议(拓展选学)---------网络编程
网络·c++·qt·网络协议·tcp/ip·udp
艾莉丝努力练剑5 天前
【Qt】界面优化:绘图API
linux·运维·开发语言·网络·qt·tcp/ip·udp
艾莉丝努力练剑5 天前
【Linux网络】NAT、内网穿透、内网打洞
linux·运维·服务器·网络·计算机网络·udp·php
我是一颗柠檬5 天前
【计算机网络全面教学】传输层TCP与UDP,三次握手到拥塞控制彻底搞懂Day4(2026年)
tcp/ip·计算机网络·udp
换个昵称都难6 天前
QUIC 协议新手入门与实战部署指南
网络协议·udp
阿钱真强道6 天前
29 鸿蒙LiteOS RK2206 Socket编程实战 UDP通信+LWIP原理全解析
udp·socket·鸿蒙·liteos·开源鸿蒙·瑞芯微·rk2206
艾莉丝努力练剑6 天前
【Linux网络】数据链路层协议(二):ARP协议
linux·运维·服务器·网络·计算机网络·udp
带土16 天前
12. UDP协议概述
网络·网络协议·udp
布朗克1687 天前
28 网络编程——Socket、TCP/UDP与HttpClient
java·网络·tcp/ip·udp