我认为为了跟踪多个WebSocket连接,我需要在列表中存储WebSocket处理器对象。但是,我有多个处理器 - 每个WS URI(端点)一个。假设我的项目有三个端点 - A,B,C。
ws://www.example.com/A
ws://www.example.com/B
ws://www.example.com/C
因此,为了处理每个连接,我有三个处理程序。所以,我困惑于在哪里创建列表来存储处理对象以供稍后使用。
添加列表之前的代码如下--
class WSHandlerA(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection'
self.write_message("Hello World")
def on_message(self, message):
print 'message received %s' % message
def on_close(self):
print 'connection closed'
class WSHandlerB(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection'
self.write_message("Hello World")
def on_message(self, message):
print 'message received %s' % message
def on_close(self):
print 'connection closed'
class WSHandlerC(tornado.websocket.WebSocketHandler):
def open(self):
print 'new connection'
self.write_message("Hello World")
def on_message(self, message):
print 'message received %s' % message
def on_close(self):
print 'connection closed'
application = tornado.web.Application([
(r'/A', WSHandlerA),
(r'/B', WSHandlerB),
(r'/C', WSHandlerC),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
那么我应该在哪里创建这个列表,并确保它对所有创建的对象可见?我也是新手,所以有点难以理解。
我还意识到我可能只需要一个URI(终端点),并将多个命令作为消息的一部分发送。但是,我不想将WebSocket转换为二进制协议。鉴于我们有URI,我应该使用它们。
感谢任何帮助。