[Twisted-web] Is there a good way to mount both an HTTP Site and a WebSocket Server on port 80?

Tom Sheffler tom.sheffler at gmail.com
Thu Apr 5 09:55:02 EDT 2012

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")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-web/attachments/20120405/2d5217d2/attachment.htm 

More information about the Twisted-web mailing list