-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove WebIO and build directly on Mux.jl and HTTP.jl #141
Conversation
Codecov Report
@@ Coverage Diff @@
## master #141 +/- ##
==========================================
+ Coverage 79.27% 81.39% +2.12%
==========================================
Files 15 18 +3
Lines 468 473 +5
==========================================
+ Hits 371 385 +14
+ Misses 97 88 -9
Continue to review full report at Codecov.
|
@travigd I wanted to let you know about this. Basically, I reimplemented the core MeshCat interface directly in Mux/HTTP/WebSockets, rather than using WebIO to handle communications and asset serving. This helped with comms performance (by skipping the JSON encode) and overall reduced the complexity of the system a bit. Integration with other WebIO stuff should keep working, since MeshCat now defines |
@tkoolen this might slightly break the RigidBodySim GUI controls, but I think it will be easy to fix. It also might just work as-is, since I'm still defining WebIO.render. Anyway, I'll make sure this is a new minor version, so we can update RigidBodySim later. |
[ci-skip]
I've been considering this for a whlie, and I think it's time to do it. MeshCat doesn't actually gain much from being built on top of WebIO, and there have been a fair number of drawbacks, mostly just the churn of having a pretty complicated dependency in the stack. This PR removes the WebIO layer and re-implements the meshcat protocol directly with Mux.jl, HTTP.jl, and WebSockets.jl. Those are the same packages that power WebIO under the hood, so nothing is changing except the way we interact with those tools. We even get to maintain compatibility with WebIO (by implementing WebIO.render with Requires.jl), so integration with other WebIO tools should keep working.
What works:
What doesn't work:
Pros:
index.html
that the python bindings use. That makes life easier on me (and fixes Might be nice to have a globalviewer
handle for debugging #33 )@async
ed to be async) (fixes More synchronous operations #60 )Cons:
Slightly more boilerplate for IJulia and Blink?Edit: not reallyProbably won't work in Juno without some additional integration.Edit: this works now