mediasoup学習ノート【一】ウォーカー
以前にnodejsに接触したことがあるなら、clusterに対してある程度知っているべきで、express js、eggajsなどのフレームワークに関わらず、多プロセス方案を使用して性能を高めます.もちろんメディアも例外ではない.
今日も一緒に思い出してください.clusterというnodeモジュールです.公式サイトからの例では、コードを開くと、メインプロセスとサブプロセスを区別し、メインプロセスは業務コードの一部を担当していません.cluster forkとは、プロセスを開始して再びmasterではないコード部分を実行することです.
実際の例では、ユーザーが部屋に入ると、部屋の人数の例があります.例えば、四人が同じ部屋に入ると、同じプロセスではないかもしれません.部屋と部屋の人数をまとめて整理するところが必要です.下記のコードを見てもいいです.
mediasoup createWorker関連パラメータ logLevel:「debug」、「warn」、「error」、「none」、/これは多くないです. logTags:‘info’、‘ice’、‘dtls’、‘rtp’、‘srtp’、‘rtcp’、‘tx’、‘bwe’、‘score’、‘simull cast’、‘svc’、‘sctp’ rtcMinPort:最小ポート rtcMaxPort:最大ポート dtlsCentifcate File,dtls Private KeyFile証明書関連 appData
今日も一緒に思い出してください.clusterというnodeモジュールです.公式サイトからの例では、コードを開くと、メインプロセスとサブプロセスを区別し、メインプロセスは業務コードの一部を担当していません.cluster forkとは、プロセスを開始して再びmasterではないコード部分を実行することです.
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
//something
console.log(process.pid)
}
プロセス間の通信方式、またはデータ方式を共有することはもちろん、本当の方法はデータベースやredisなどである.実際の例では、ユーザーが部屋に入ると、部屋の人数の例があります.例えば、四人が同じ部屋に入ると、同じプロセスではないかもしれません.部屋と部屋の人数をまとめて整理するところが必要です.下記のコードを見てもいいです.
let users = new Map()
if(cluster.isMaster){
const worker = cluster.fork()
worker.send('other something');
worker.on('message', function(message){
switch(message.action){
case 'join':
users.set(messages.data.userId, message.data)
break;
case 'leave':
users.delete(message.data.userId);
break;
default:
log('unknow action name')
}
})
} else {
//
users ,
process.on('message', reciveMessageHandle) //
//
process.send({action:'join',data:{userId}});
}
コードを見たら分かりやすいと思います.もちろんこれはただのデモコードです.更に拡大して、みんなは更に考えてもいいです.守りのプロセスは永遠にかけられないサービスをします.メインプロセスが子プロセスの異常終了を傍受したらすぐにforkするのは暴力的な方法ですが、方法の中にアラームの通知(メール、メール)などを追加することができます.mediasoup createWorker関連パラメータ
const mediasoup = require('mediasoup');
const worker = mediasoup.createWorker({...options})
〹2020疫病の間に何かを学ぶ.