Comments (6)
Huh, thanks for the ideas, decided to check the stuck server side coroutine idea with a fresh restart but to no avail: same behavior, same "Error handling websocket connection" error message. Not sure if fully ruled out, but now betting the websockets error is the underlying issue, going to try digging into that more, will swing back here if I make any headway. Thanks again!
from mux.jl.
I think this at line 38 is the server side code which could benfit from an upgrade from read to readguarded. I suggest you open an issue on WebIO and then follow up with a pull request. Tag me if you would like a review.
I'm able to reproduce just as you say. I used Chrome to inspect the first page, button worked. Upon switching to the second page, the first one naturally closed down and produced the 'Error'. Which should be of no consequence at all since nobody cares what the coroutine does anymore. A new task/ coroutine is generated every time you load a new page.
function create_socket(req)
sock = req[:socket]
conn = WebSockConnection(sock)
t = @async while isopen(sock)
data = read(sock)
msg = JSON.parse(String(data))
WebIO.dispatch(conn, msg)
end
wait(t)
end
from mux.jl.
Hello, I do not know what goes wrong here, but the error message indicates that the client side (javascript) exits in an orderly fashion. This may happen if you close the window with the button in. It may just be how it should work, but with an old websockets.jl version, the server side read coroutine might just have got stuck forever.
This confuses the server side code. I do not know where it is, but it should read the wrbsocket using "readguarded" in order to avoid such messages.
Note I am just speculating and did not try your code.
from mux.jl.
Thanks hustf! As soon as the holiday season lightens up on me I'll take a closer look and open an issue with WebIO, probably tagging you in the pull request and/or the issue to be sure I clarified the issue correctly.
So if I'm understanding you right, that WebIO issue is likely separate from the behavior I described that appears to be a bug? Also good to know, with this lead perhaps I can make more headway on tracking down the bug.
Thanks again and happy holidays!
from mux.jl.
I was actually not reading properly. I can't reproduce the non-responsive behaviour. I get the error message whenever I close a page, but I can load both localhost:8000 and localhost:8000/page1. If I have several pages open at the same time and close one, the other ones are not affected. Perhaps you can report in more detail exactly what you do? Operating system, and which front-end?
from mux.jl.
Hey hustf, thanks for looking at this again, once you couldn't reproduce the non-responsive behavior I took another look at it. Remembering your comment on a potential WebIO issue, I found my WebIO was at 0.6.1 and I was able to update it to 0.7.0, and that seems to have fixed the issue?
I'm only a little mystified because I thought I had updated everything, and I don't see how I would have selectively updated Mux + Interact but not WebIO, resulting in some incompatibility, but that could be the case. For the record, I have a macbook running OSX 10.14 and Julia 1.02, and I was using Chrome.
Regardless, I better close this issue for now since it seems to be resolved with the combination of Interact.jl v0.9.0, Mux.jl v0.5.3, and WebIO v0.7.0. Thank you again! -Andrew
from mux.jl.
Related Issues (20)
- TagBot trigger issue HOT 6
- Add me as a collaborator? HOT 3
- Road to v1 HOT 1
- Error on first request from Firefox HOT 9
- installing Mux v0.7.4 downgrades HTTP v0.9.2 HOT 2
- is Mux.jl an appropriate home for HTTP/Revise glue? HOT 7
- public interface for regression tests? HOT 4
- No :socket key in websocket server object HOT 3
- How to combine method & route ? HOT 1
- `serve` method to integrate websockets broken
- Rest api? HOT 1
- Is there WSS option in Mux v1.0.1? HOT 1
- Precompiling hangs on latest Julia nightly HOT 1
- Feature Request: let splitpath also handle the query intelligently
- Let `response` return a `HTTP.Response` object HOT 6
- Make `http_handler` part of `defaults` and `ws_handler` part of `wdefaults` HOT 1
- WebSockets example in README is slightly broken HOT 2
- Tests broken due to HTTP.jl
- Disable AppVeyor builds
- Tag a version HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mux.jl.