0
我在使用Ajax和Websockets的项目上工作。任务是摆脱Ajax并仅使用Websockets。在服务器端,我使用了龙卷风和django以及tornado-url-dispatcher。我想重用django中使用websocket(tornado.websocket.WebSocketHandler)的单个实例定义的一些方法。这个类有3个默认的处理程序,但我通过添加新的处理程序来扩展它,这些处理程序重定向到现有的django方法,并修改了调度程序以指向新的方法。websocket [龙卷风]的单个实例可以处理不同的请求吗?
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完成的请求?谢谢。
嗨!什么是共享对象,请详细介绍一下如何做到这一点?链接到源代码或代码片段也将有所帮助。谢谢。 –
我只是指在启动时创建的某个对象,并存储在某处可供所有实例访问的对象。这可以像全局变量一样简单,比如https://github.com/tornadoweb/tornado/blob/stable/demos/chat/chatdemo.py中的MessageBuffer –
您可以在其中放置任何东西;我通常会推荐使用回调对象而不是WSHandler本身(所以你可以支持混合websocket/long-polling的使用)。全局变量将成为多个处理程序回调的容器。 –