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 primarily recreates #3773, which you should read to understand the original contributor's (@jtigues) motivations and justifications. I have adapted some of those changes in a way that makes more sense to me. In particular, I added overloads that allow a callback function to be given that is called when response messages are received.
I realized while writing this code that my own needs are to have EmuHawk act as a websocket server (rather than as a client which this PR addresses), and so I will follow up this PR with another that serves my needs.
Main Changes
Refer to #3773 for primary changes. Below I record only those that deviate from #3773
ClientWebSocketWrapper.cs
). These overloads could be used, for instance, withinCommonLuaLibrary.cs
to create a Luaws_send_and_receive
to automatically perform bidirectional communication with the server.ClientWebSocketWrapper
I defer the async connection process toConnect
, which better fits with its usage and avoids the awkward behavior in the constructor (ClientWebSocketWrapper.cs
,WebsocketServer.cs
,CommonLuaLibrary.cs
)Other Changes
ClientWebSocketWrapper.cs
,CommonLuaLibrary.cs
)Contributor Checklist
Check if completed: