Is there a good way to mount both an HTTP Site and a WebSocket Server on port 80?

I was wondering about ways to mount different types of protocol handlers on the same port. It looks like there will be new WebSocket support implementing a websocket Site. We'll also have the existing HTTP Site. Will they both be able to live on port 80? Is it important to be able to do this? In my own experiments, I've modified "portforward.py" to inspect an incoming request and dispatch to one of two different servers mounted on Unix-Domain sockets, depending on the request path in the header. It looks something like the code below. This does a lot of copying of each data packet, but seems to be effective. Does anyone have a better suggestion for how to mount different protocol handlers on the same port? Thanks. -T ======== site1 = twisted.web.server.Site(...) site2 = txws.WebSocketFactory(...) reactor.listenUNIX("site1.sck", site1) reactor.listenUNIX("site2.sck", site2) # this routes requests on port 80 to one of the two sockets reactor.listenTCP(80, InspectingProxyFactory("site1.sck", "site2.sck") =======

On 04/05/2012 02:55 PM, Tom Sheffler wrote:
I was wondering about ways to mount different types of protocol handlers on the same port. It looks like there will be new WebSocket support implementing a websocket Site. We'll also have the existing HTTP Site. Will they both be able to live on port 80? Is it important to be able to do this?
Why would you do this? IIRC WebSocket "switches" from HTTP into WebSocket mode; so what you actually want is for the HTTP Site (actually a Factory) to return a Protocol instance that: 1. Handles HTTP 2. Detects a WebSocket switch 3. Creates a new WebSocket Protocol, attaches the existing transport, and deletes itself
participants (2)
-
Phil Mayers
-
Tom Sheffler