* Remove template in favor of official samples * Fixed a variable name copy pasta mistake line 35 was _database.GetData() instead of DBService.GetData() * Experimental theme change * Change paragraph, code, heading fonts * Widen viewport * Update DocFX.Plugins.LastModified v1.2.3 * Exclude Discord.API in docs * Add remarks for SocketReaction properties * Add examples for BaseSocketClient.Events * Add additional clarification for some methods * Move IUser and IGuildChannel examples * Clarify several guides samples with notes - Reword TypeReader comment to avoid giving the idea that the sample itself is "obsolete" - Remove CommandException logging comment regarding C#7.0 as the version is now the standard across VS2017 and up - Remove suggestion about handling result in command handler since it is now advised to use CommandExecuted instead + Add additional comment to clarify ctor for DI setup * Add/migrate code examples * Incorporate material design theme License @ https://github.com/ovasquez * Update installation and nightly guide * Fix improper indentations made obvious by the widen viewport * Fix minor grammar issues + Add installation for nightly build using dotnet CLI * Fix nav level indentation * Revise "Your First Bot" article * Merge some paragraphs to avoid clutter while keeping readability * Reword the use of command framework + Add additional warning/note about environment variable * Add additional indent level * Fix indentation text warping * Remove connections sample * Update logging sample Remove redundant part of the sample * Remove mention of RPC * Remove misleading section about commands - Remove command sample from complete snippet * Revise "Your First Bot" command paragraphs * Change wording to hint devs that additional command parser packages may be available, as more and more begin to crop up * Update themes * Add XML docs contribution guidelines Update guidelines * Update CommandExecuted remarks * Fix precondition remarks typo no one saw that ok * Fix permission sample in docfx * Fix IMessageChannel samples * Update docs/_template/light-dark-theme/styles/docfx.vendor.minify.css Co-Authored-By: Still34 <341464@gmail.com> * Update docs/_template/light-dark-theme/styles/material.css Co-Authored-By: Still34 <341464@gmail.com> * Update docs/_template/light-dark-theme/styles/material.css Co-Authored-By: Still34 <341464@gmail.com>
54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
---
|
|
uid: Guides.Concepts.ManageConnections
|
|
title: 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.
|
|
|
|
[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
|
|
|
|
## 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!
|
|
|
|
[events]: xref:Guides.Concepts.Events
|