Use React hook to better deal with websockets #3299
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.
The initial goal with this PR is to avoid that starting the tracing could be done more often (see #3283). It would have been possible to keep a boolean flag that the websocket was being opened. I think it would be more idiomatic to deal with this using React's built-in mechanisms.
It now uses the
logActive
state to determine whether the web-socket should be connected. It uses thewsUrl
state to determine the actual URL. The URL is updated accordingly to the individual flags and filters. This would also allow to dynamically switch to another URL if the flags/filters are updated. This is now only blocked, because the HTML elements are disabled when tracing is active.Using a web-socket in React works much better with the
useWebSocket
component. It also provides a built-in ping mechanism and supports typed responses (no need to unmarshal JSON in our code).PS: Due to the change it's probably better to compare this side-by-side instead of unified diffing.