Files
Discord.Net/docs/guides/concepts/connections.md
Still Hsu 4309550ca0 docs: Main docs update (#1304)
* 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>
2019-05-13 18:29:47 -04:00

1.8 KiB

uid, title
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!