ws-server: Submit ping regardless of WS messages #788
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.
This PR ensures that a
Ping
frame is submitted regardless of WS traffic.Previously, the ping interval timer was dropped with each iteration of the select loop.
As a result, we could encounter a scenario of
Ping
starvation, where pings are neversubmitted due to WS traffic being received at a fast pace.
This ensures the ping interval timer is propagated and reinitialized when triggered, leading
to a
Ping
being submitted even if the server is handling messages.One drawback of this approach is that the server spends some cycles handling the
Ping
frames instead of the actual server load. One advantage is that the keep-alive functionality
is entirely handled via control frames, as opposed to either: ping interval being expired, or
WS messages handled.
Testing Done