Files
Discord.Net/docs/guides/concepts/connections.md
Christopher F 3a60c58697 Rewrite all concepts documentation
hello RC documentation
2017-04-03 18:46:00 -04:00

1.9 KiB

title
title
Managing Connections

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.

These clients include the DiscordSocketClient and DiscordRpcClient, as well as Audio clients.

To end a connection, invoke the StopAsync method. This will gracefully close 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 actually made.

As a result, you will 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 complete guild cache.

Samples

[!code-csharpConnection Sample]

Tips

Avoid running long-running code on the gateway! If you deadlock the gateway (as explained in events), the connection manager will be unable 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 doesn't manage to reconnect, you've found a bug!