Use Discord heartbeat interval in audio. #2765
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When an audio connection is created, the heartbeat interval provided by Discrod in its "Hello" message is used.
When it comes to sending the heartbeats, both in the audio and in the Gateway, if these are not sent within the interval, Discord closes the connection. Therefore, a variable has been introduced to reduce this interval by a percentage and thus always ensure that the heartbeat is going to be sent before time runs out.
Modified the code of the AudioCLient class a bit to make it "more readable", some magic numbers have been turned into constants, it doesn't make sense to use "var" instead of "int", "returns" which do nothing because they are already at the end of the method.
P.S. The audio system needs a reconnection system. The only thing this PR does is lower the probability of socket disconnection. In the event that the session times out, or the server does not respond to the heartbeat or anything other than closing the socket, the audio transmission is interrupted and disconnected from the voice channel. If someone implements the audio reconnection it would be appreciated :)
Changes