GithubHelp home page GithubHelp logo

Porting guile-websocket to fibers about fibers HOT 6 CLOSED

wingo avatar wingo commented on June 23, 2024 1
Porting guile-websocket to fibers

from fibers.

Comments (6)

cwebber avatar cwebber commented on June 23, 2024 1

Note that when I ported websockets to 8sync I'm pretty sure I fixed this very problem also. Remember that guile-websockets wasn't tested originally against an async environment.

I'll be working on getting the fixes I did to guile-websockets when I bundled it with 8sync upstream soon.

from fibers.

amirouche avatar amirouche commented on June 23, 2024

Any help on this?

from fibers.

jellelicht avatar jellelicht commented on June 23, 2024

@amirouche: I checked out your repo, and updated guile to 2.2;
After some very crude (display ...) based debugging, it seems that your code as-is blocks in:

  (define (read-frame-maybe)
    (and (not (port-eof? client-socket))
         (read-frame client-socket)))

Some further research let me to:

 -- Scheme Procedure: port-eof? input-port
     Equivalent to ‘(eof-object? (lookahead-u8 INPUT-PORT))’.

 -- Scheme Procedure: get-u8 port
 -- C Function: scm_get_u8 (port)
     Return an octet read from PORT, an input port, blocking as
     necessary, or the end-of-file object.

 -- Scheme Procedure: lookahead-u8 port
 -- C Function: scm_lookahead_u8 (port)
     Like ‘get-u8’ but does not update PORT’s position to point past the
     octet.

So I guess you are calling this on a port that is waiting to be filled (whereas the other side of this story is probably also waiting on a reply first).

p.s. I do not see the 7-times-refresh behaviour you mention.

from fibers.

amirouche avatar amirouche commented on June 23, 2024

@cwebber let me know when it's pushed upstream please.

from fibers.

amirouche avatar amirouche commented on June 23, 2024

@cwebber any news? Is it possible to use 8sync to create a web application using websockets? tia

from fibers.

cwebber avatar cwebber commented on June 23, 2024

@amirouche Yes, the MUD you see on the video on https://www.gnu.org/software/8sync/ is using websockets + 8sync, and so is https://test.activitypub.rocks/

However 8sync is not really the right home for it. I spoke to David Thompson recently and suggested we fold websockets support into guile-webutils and he supported that idea. Once we move support there you could use websockets with fibers or 8sync (which is going to use Fibers in the next release anyhow) or whatever event loop you want.

from fibers.

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.