可以使用websocket [tornado]的单个实例来处理不同的请求吗?

时间:2015-01-12 14:24:07

标签: django websocket tornado

我在使用Ajax和Websockets的项目上工作。任务是摆脱Ajax并仅使用Websockets。在服务器端,我正在使用龙卷风和django与tornado-url-dispatcher。我想使用websocket的单个实例(tornado.websocket.WebSocketHandler)重用已在django中定义的一些方法。这个类有3个默认处理程序但是我通过添加新的处理程序来扩展它,这些处理程序重定向到现有的django方法并修改了调度程序以指向新方法。

class WSHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        ...
    def on_message(self, message):
        ...
    def on_close(self):
        ...
    def new_handler_1(self, request):
        ...

tornado_app = tornado.web.Application(
    [
      (r'/ws/new_handler', wshandler.WSHandler.new_handler_1),
      (r'/ws', wshandler.WSHandler),
    ]

为了从new_handler_1方法回复通过websocket完成的请求,我应该使用什么类型的响应?感谢。

1 个答案:

答案 0 :(得分:0)

你不能这样做;为每个请求创建一个新的处理程序类实例。相反,制作一些处理程序可以用来在它们之间进行通信的其他共享对象。您可以通过将此对象附加到Application对象或将其作为initialize参数传递给处理程序来将此对象传递给处理程序。