fix(useWebSocket): don't hide pong setTimeout reference #2206
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
In #2170 the capability was added to monitor pong's (or server replies) as part of the existing heartbeat/ping functionality.
Currently if the pong gets delayed/dropped for any reason (e.g. server restart) and "pong reply time">pingInterval; the ping function would execute again
The ping function creates a pong setTimout and saves the reference (this timeout will close the connection if allowed to expire).
If a previous setTimeout has not been cancelled yet, the reference is lost and the connection will be closed.
Additional context
By adjusting the timers appropriately you can now be more leanient and allow for "dropped" pongs. E.g if you require 1 pong (or server message) for every 3 pings you could set pongTimeout >= 3x ping interval
It's ok to clear and invalid setTimeout reference - https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout#notes
What is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
fixes #123
).