【发布时间】:2014-02-21 08:40:17
【问题描述】:
我想跟踪多个 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()
那么我在哪里创建这个列表并确保它对所有创建的对象都是可见的?我也是 python 新手,所以在理解它时遇到了一些麻烦。
我也意识到我可能只使用一个 URI(端点)并将多个命令作为消息本身的一部分发送。但是后来我不想把 WebSocket 变成二进制协议。鉴于我们有 URI,我应该使用它们。
感谢您的帮助。
【问题讨论】:
-
@Rod Hyde - 如果您看到,这不是 Websocket 问题。它更像是一个python问题。我已经知道如何处理连接,只是不知道如何将它放入 python 中。所以我不同意它是一个重复(标题可能很接近)