Discord.Net/docs/guides/concepts/connections.md
2024-06-13 17:43:59 +12:00

1.8 KiB

uid title
Guides.Concepts.ManageConnections Managing Connections

Managing Connections with Discord.Net

In Discord.Net, once a client has been started, it will automatically maintain a connection to Discord's gateway until it is manually stopped.

Usage

To start a connection, invoke the StartAsync method on a client that supports a WebSocket connection; to end a connection, invoke the StopAsync method, which gracefully closes any open WebSocket or UdpSocket connections.

Since the Start/Stop methods only signal to an underlying connection manager that a connection needs to be started, they return before a connection is made.

As a result, you need to hook into one of the connection-state based events to have an accurate representation of when a client is ready for use.

All clients provide a Connected and Disconnected event, which is raised respectively when a connection opens or closes. In the case of the DiscordSocketClient, this does not mean that the client is ready to be used.

A separate event, Ready, is provided on DiscordSocketClient, which is raised only when the client has finished guild stream or guild sync and has a completed guild cache.

Reconnection

Tip

Avoid running long-running code on the gateway! If you deadlock the gateway (as explained in events), the connection manager will NOT be able to recover and reconnect.

Assuming the client disconnected because of a fault on Discord's end, and not a deadlock on your end, we will always attempt to reconnect and resume a connection.

Don't worry about trying to maintain your own connections, the connection manager is designed to be bulletproof and never fail - if your client does not manage to reconnect, you have found a bug!