mavutil: add WebSocket Server mavlink_connection type #967
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 adds support for a WebSocket server connection type. This is used with the prefix
wsserver
. For examplewsserver:localhost:5763
.https://github.com/mavlink/mavlink2rest also does WebSockets, however, it sends a MAVLink JSON object in a text WebSocket message. This sends raw MAVLink in the binary WebSocket message.
I have tested with a browser based client. It does work, but I wrote it too, so its not a independent test. I have also only tested sending from server to client, not from client to server.
The more common python WebSocket library is designed for a asyncio workflow which makes it hard to integrate here. I ended up using wsproto mostly because it had a synchronous server example.
It would be nice to get multi client working in the future. I'm not sure if we would want that to work under this same prefix or if we would want to add a new prefix to enable that.
Packetisation to get more data into each packet might also be a good idea.