我有一个Twisted Web服务器,同时为静态站点和高速公路网络套接字提供服务。websocket作为子站点添加到自定义站点,如下所示:
self.factory = WebSocketServerFactory(address+":"+str(port), debug=False)
self.factory.protocol = self.getWebSocketProtocol()
resource = WebSocketResource(self.factory)
staticfilepath = kwargs['staticfilepath'].encode('utf-8')
websocketpath = kwargs['websocketpath'].encode('utf-8')
root = CustomFile(staticfilepath)
root.putChild(websocketpath, resource)
这还可以。问题是我现在需要将websocket添加到嵌套路径中(例如,不要在websocketpath="ws"
使用websocketpath="sockets/ws"
)。我尝试过拆分websocketpath,然后为每个级别创建一个资源,将websocket添加到最终版本,但似乎不起作用。
我在Twisted中追踪到了python的三个字符串问题。如果url是用尾部斜杠输入的,一切都可以。但是,如果没有尾部斜杠,则会调用Twisted函数addSlash,这会导致Python 3中出现未处理的异常。我对Twisted代码进行了修复,它与两个python版本都兼容,并且似乎工作正常