mediasoupでのsendonlyとreconlyをSDPだけで試した

webRTCでは接続してきたユーザはメディアの送信、受信を両方共できるのですが、
今回はメディアの送信のみと配信のみで接続させてみたいと思います。

今回はクライアントの設定のみで行いたいと思います。

修正箇所を見てみる

webRTCではSDP(session description protocol)っという接続情報を記述しているものがあります。
これをもとにP2Pでの接続時にお互いの情報(コーデックなど…)を交換しあい、接続をすることができるということです。
このSDPの中を変更し、送信のみと受信のみと切り分けることができます。
下記が設定できる、送受信モードです。

属性 内容
sendonly 送信のみのモード
recvonly 受信のみのモード
sendrecv 送受信モード
inactive 非アクティブ

デフォルトではSDPの中に

a=sendrecv

っと記述しているのでここを修正

// 送信のみ
function modifiSendOnlyMode(description) {
    sdp = description.replace(/a=sendrecv\r\n/g, 'a=sendonly\r\n');
    return sdp;
}
// 配信のみ
function modifiReceiveOnlyMode(description) {
    sdp = description.replace(/a=sendrecv\r\n/g, 'a=recvonly\r\n');
    return sdp;
}

修正したSDPをLocalDescriptionにセットし、相手に通知すればOK

無事に送信のみのクライアントと受信のみにクライアントの切り替え成功です。