# What does need to be closed on client disconnect?

**URL:** <https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647>\
**Category:** mediasoup libraries\
**Created:** [March 31, 2021, 8:19am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647 "2021-03-31T08:19:23Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![LadaBr](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ladabr/32/881_2.png) [@LadaBr](https://mediasoup.discourse.group/u/LadaBr)\
**Post date:** [March 31, 2021, 8:19am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/1 "2021-03-31T08:19:23Z")

</div>

Hey guys, I get this error after a while: [no more available ports [transport:udp, ip:’0.0.0.0’, numAttempt:101] even though I close transports on disconnect.

```auto
socket.on('disconnect', () => {
                console.log('Client disconnected', socket.id);
                const producer = this.producers.get(socket.id);
                const producerTransport = this.transports.producer.get(socket.id);
                if (producer)
                    producer.close();
                if (producerTransport)
                    producerTransport.close();
                this.producers.delete(socket.id);
                this.transports.producer.delete(socket.id);
                socket.broadcast.emit('clientDisconnected', { socketId: socket.id });
            });

```

So I wonder if I need to close any other transport. Do I have to close consumer too? I use single room logic where all clients consume each other.

Ports when connected:

```auto
mediasoup 630199 root 14u IPv4 ..... 0t0 UDP *:10025
mediasoup 630199 root 15u IPv4 ..... 0t0 TCP *:10025 (LISTEN)
mediasoup 630199 root 16u IPv4 ..... 0t0 UDP *:10030
mediasoup 630199 root 17u IPv4 ..... 0t0 TCP *:10021 (LISTEN)

```

After disconnect:

```auto
mediasoup 630199 root 16u IPv4 ..... 0t0 UDP *:10030
mediasoup 630199 root 17u IPv4 ..... 0t0 TCP *:10021 (LISTEN)

```

---

<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:** [March 31, 2021, 8:42am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/2 "2021-03-31T08:42:12Z")

</div>

You need to close the transports you create in mediasoup side, that’s all. I don’t know if you are doing something wrong in your code, but the theory is easy: If you create transports associated to a “user” and the user disconnects, you must close the transports you created by calling `close()` on them. That’s all.

---

<div class="post-metadata">

**Author:** ![LadaBr](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ladabr/32/881_2.png) [@LadaBr](https://mediasoup.discourse.group/u/LadaBr)\
**Post date:** [March 31, 2021, 9:00am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/3 "2021-03-31T09:00:51Z")

</div>

When I close consumer transport that was created for client that disconnected then ports are free but sometimes I get an error: **Error: Consumer not found** in **mediasoup/lib/Channel.js:199:37**. What does have to be done before I can close consumer transport?

I also have a set of remote clients for each client that I loop through and close all consumers with id of disconnected client.

```auto
                for (const [socketId, set] of this.consumerSets.entries()) {
                    for (const [remoteId, consumer] of set.entries()) {
                        if (remoteId === socket.id) {
                            consumer.close();
                            set.delete(remoteId);
                            console.log("Deleted consumer of", socketId, "for", remoteId);
                        }
                    }
                }
                if (consumerTransport)
                    consumerTransport.close();

```

---

<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:** [March 31, 2021, 9:48am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/4 "2021-03-31T09:48:11Z")

</div>

I don’t know what a “consumer transport” is. Anyway you are talking about “closing transports” then you show code that closes consumers. I don’t follow, sorry.

---

<div class="post-metadata">

**Author:** ![LadaBr](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ladabr/32/881_2.png) [@LadaBr](https://mediasoup.discourse.group/u/LadaBr)\
**Post date:** [March 31, 2021, 10:03am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/5 "2021-03-31T10:03:01Z")

</div>

I just follow examples and there is consumer transport. It is created for client when they connect and want to consume all other clients. My previous message shows code that closes consumers.

---

<div class="post-metadata">

**Author:** ![snnz](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/snnz/32/693_2.png) [@snnz](https://mediasoup.discourse.group/u/snnz)\
**Post date:** [March 31, 2021, 10:54am UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/6 "2021-03-31T10:54:20Z")

</div>

> [@LadaBr](#):
>
> sometimes I get an error: **Error: Consumer not found** in **mediasoup/lib/Channel.js:199:37**

This is a message from the worker process. Probably you are closing consumer after its producer has been closed (along with all associated consumers). Just close the consumer transport. There is no need to close consumers manually when the transport is closed.

---

<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:** [March 31, 2021, 12:41pm UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/7 "2021-03-31T12:41:25Z")

</div>

Ok, I suggest following the documentation instead of examples.

---

<div class="post-metadata">

**Author:** ![LadaBr](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ladabr/32/881_2.png) [@LadaBr](https://mediasoup.discourse.group/u/LadaBr)\
**Post date:** [March 31, 2021, 1:19pm UTC](https://mediasoup.discourse.group/t/what-does-need-to-be-closed-on-client-disconnect/2647/8 "2021-03-31T13:19:52Z")

</div>

Yes, you are right. Thanks a lot.
