mediasoup学習ノート【一】ウォーカー

9953 ワード

以前にnodejsに接触したことがあるなら、clusterに対してある程度知っているべきで、express js、eggajsなどのフレームワークに関わらず、多プロセス方案を使用して性能を高めます.もちろんメディアも例外ではない.
今日も一緒に思い出してください.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関連パラメータ
  • 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
  • const mediasoup = require('mediasoup');
    const worker = mediasoup.createWorker({...options})
    
    〹2020疫病の間に何かを学ぶ.