2015-12-11 3 views
0

У меня есть Twisted web-сервер, обслуживающий как статический сайт, так и веб-сайт Autobahn. Веб-сайт добавляется в качестве ребенка на пользовательский сайт, как показано ниже:Добавить веб-сайт Autobahn к вложенному ресурсу Twisted

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"). Я попытался разделить путь websocket, а затем создать ресурс для каждого уровня, добавив websocket в финал, но он, похоже, не работает.

ответ

0

Я отследил это до трех строк в python в Twisted. Если url вводится с завершающей косой чертой, все в порядке. Однако, если нет косой черты, тогда вызывается функция Twisted addSlash, которая вызывает необработанное исключение в Python 3. Я помещаю исправление в Twisted-код, который совместим с обеими версиями python и, кажется, работает нормально.

Смежные вопросы