> For the complete documentation index, see [llms.txt](https://docs.bird.com/pusher/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bird.com/pusher/channels/channels/troubleshooting/why-is-my-user-stuck-in-a-presence-channel.md).

# Why Is My User Stuck In A Presence Channel?

Usually, when a client disconnects, it closes the TCP socket on both ends and we can send the "member removed" event immediately. However, certain situations can result in the client not cleanly disconnecting, and leaving a "half open connection" where a client will still be seen as online by the server even though they aren't connected. We find and close these half open connections by sending a ping to the client after a certain period of inactivity, and then if no pong response is received, the connection is assumed dead and closed. This can take a couple of minutes to happen.

The timeout for inactive connections in Pusher is 60 seconds. After the 60 seconds a ping is sent and if a pong is not received within 15 seconds then the connection is cleaned up. This means that Pusher can indicate a connection is open for up to 75 seconds before cleaning up.

You can't change the amount of time before a ping is sent, and the amount of time to wait for a pong response unless your app is on dedicated cluster.

If your app is on dedicated cluster and you want to change the ping and pong timeouts to support your use case better, please, let us know with the below link

{% hint style="info" %}
Still have questions? Please reach out to our Support team by visiting [this page](https://messagebird.com/support-center/Pusher-request-new).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bird.com/pusher/channels/channels/troubleshooting/why-is-my-user-stuck-in-a-presence-channel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
