Code Monkey home page Code Monkey logo

Comments (6)

amckay1 avatar amckay1 commented on July 22, 2024 1

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.

hustf avatar hustf commented on July 22, 2024 1

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.

hustf avatar hustf commented on July 22, 2024

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.

amckay1 avatar amckay1 commented on July 22, 2024

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.

hustf avatar hustf commented on July 22, 2024

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.

amckay1 avatar amckay1 commented on July 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.