# using multiple consumers in a single recvTransport

**URL:** <https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375>\
**Category:** mediasoup libraries\
**Created:** [November 7, 2019, 3:20am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375 "2019-11-07T03:20:36Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![rocketboy2015](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@rocketboy2015](https://mediasoup.discourse.group/u/rocketboy2015)\
**Post date:** [November 7, 2019, 3:20am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/1 "2019-11-07T03:20:36Z")

</div>

I just have built my first meeting app using mediasoup. And I created just one recvTransport for receiving every participants tracks in my app.  
I want to ask whether this is a recommended way to use recvTransport or not.  
Is there anyone who experience performance/stability issues with using a single recvTransport or too many recvTransport(1 recvTransport for each peer).  
I vaguely understand that WebRTC support ‘unified-plan’ so we can send multiple tracks via single RTCPeerConnection. But is this technique stable in every platform?

I suddenly realize that this question is not for mediasoup users but for WebRTC users.  
But if anyone know the answer, please let me know.

---

<div class="post-metadata">

**Author:** ![mkh](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mkh/32/145_2.png) [@mkh](https://mediasoup.discourse.group/u/mkh)\
**Post date:** [November 7, 2019, 3:35am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/2 "2019-11-07T03:35:40Z")

</div>

You can not use a single Transport (i.e. RTCPeerConnection) for multiple peers but you may have multiple consumers (i.e MediaTrack) over a single Transport. So every peer would need one consuming transport at least.

---

<div class="post-metadata">

**Author:** ![rocketboy2015](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@rocketboy2015](https://mediasoup.discourse.group/u/rocketboy2015)\
**Post date:** [November 7, 2019, 3:57am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/3 "2019-11-07T03:57:34Z")

</div>

I am afraid that I probably gave unclear description of my situation.  
I mean I created a single recvTransport in **client app** for multiple tracks from multiple remote peers.  
So every client app have one busy recvTransport and one sendTransport. And it works perfectly.

My questions is that if there is recommended way between ‘using single recvTransport for every remote peers’ and ‘creating recvTransport everytime a remote peer join in’ in terms of performance/stability on both sides of client and server.

---

<div class="post-metadata">

**Author:** ![mkh](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mkh/32/145_2.png) [@mkh](https://mediasoup.discourse.group/u/mkh)\
**Post date:** [November 7, 2019, 4:46am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/4 "2019-11-07T04:46:54Z")

</div>

> I mean I created a single recvTransport in **client app** for multiple tracks from multiple remote peers.  
> So every client app have one busy recvTransport and one sendTransport. And it works perfectly.

I don’t understand! Each Transport (send or receive) is responsible for only one point-to-point connection (two peers). How could you manage connecting a client to multiple remote peers using just one Transport?

---

<div class="post-metadata">

**Author:** ![rocketboy2015](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@rocketboy2015](https://mediasoup.discourse.group/u/rocketboy2015)\
**Post date:** [November 7, 2019, 5:01am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/5 "2019-11-07T05:01:13Z")

</div>

Mediasoup can collect all tracks from remote peers and then send it to another peer. As I undertood, it is what SFUs provide.  
So each peers (client side) don’t need to establish multiple recvTransports for every remote peers. It just need to connect with mediasoup-server even via single SRTP connection for receiving every tracks of remote peers.  
Surely, you can create multiple recvTransport for every remote peers. But it’s not necessary.

---

<div class="post-metadata">

**Author:** ![irrationnelle](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/irrationnelle/32/149_2.png) [@irrationnelle](https://mediasoup.discourse.group/u/irrationnelle)\
**Post date:** [November 7, 2019, 5:09am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/6 "2019-11-07T05:09:15Z")

</div>

> I don’t understand! Each Transport (send or receive) is responsible for only one point-to-point connection (two peers). How could you manage connecting a client to multiple remote peers using just one Transport?

Maybe he would like to say that client app is client-side app like react or angular app with mediasoup-client. As you said, multiples transports is responsible for connection **on media server with mediasoup** but **client app like react app** has only one send transport and one receive transport which communicate with media server.

---

<div class="post-metadata">

**Author:** ![rocketboy2015](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@rocketboy2015](https://mediasoup.discourse.group/u/rocketboy2015)\
**Post date:** [November 7, 2019, 5:12am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/7 "2019-11-07T05:12:04Z")

</div>

I should move this issue from ‘mediasoup’ to ‘mediasoup-client’.  
I am sorry for making you confused.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [November 7, 2019, 8:00am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/8 "2019-11-07T08:00:52Z")

</div>

Yes, you should use a single transport for receiving all Consumers. That way the bandwidth estimator of mediasoup will work better than if there are N transports (so each of one would have a bandwidth estimator competing with the others).

BTW we’ll release soon a new version of mediasoup with transport-cc support, which will improve dramatically how mediasoup estimates the downlink bandwidth estimation of each receiver. So yes, use a single transport for receiving all Consumers.

---

<div class="post-metadata">

**Author:** ![mkh](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mkh/32/145_2.png) [@mkh](https://mediasoup.discourse.group/u/mkh)\
**Post date:** [November 7, 2019, 8:32am UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/9 "2019-11-07T08:32:41Z")

</div>

@rocketboy2015  
To be clear, clients are not connected directly together but via a server in the middle. So each client is connected only to one remote peer (which is the mediasoup server) not multiple peers. And yes one Transport is enough for receiving all the other client’s media.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [December 2, 2019, 11:11pm UTC](https://mediasoup.discourse.group/t/using-multiple-consumers-in-a-single-recvtransport/375/10 "2019-12-02T23:11:00Z")

</div>


