CrowdHailer / raxx

Interface for HTTP webservers, frameworks and clients
https://hexdocs.pm/raxx
Apache License 2.0
401 stars 29 forks source link

Websocket Support #95

Closed thdxr closed 6 years ago

thdxr commented 6 years ago

I saw your other comment in another issue about WebSocket not being relevant with HTTP2 however there's still plenty of situations where it makes sense to use it - can see explanations here: https://stackoverflow.com/questions/28582935/does-http-2-make-websockets-obsolete

I was wondering if you'd be open to adding WebSocket support?

CrowdHailer commented 6 years ago

Hi I'm certainly open to adding websocket support. Admittedly it's not something that I am working towards right now. I'm prioritising the tools needed for secure applications. However if you(or other) wanted to experiment I would certainly offer some pointers.

thdxr commented 6 years ago

Sure that's something I'd like to work on. Where do you suggest I start?

CrowdHailer commented 6 years ago

Hey that's awesome. Having not looked into it much I'm not sure exactly what I would entail. I would start by adding websocket support to Ace then returning something like %Ace.WebsocketUpgrade{} from the appropriate handle_request call. That struct would basically exit the Raxx world and would allow for quicker development just in Ace.

I did something similar when developing streaming and then as what was needed emerged I pushed it back into the raxx interface.

aside

An alternative option could be to look into creating a raxx cowboy adapter. and cowboy already has websockets. That might be less work than websockets in Ace

CrowdHailer commented 6 years ago

I am going to close this issue for now.

Websocket support should probably be added to a specific server first. before the process of trying to create a generalised interface in Raxx