我正在尝试构建一个龙卷风应用程序,客户可以通过请求通信器websocket来注册自己。
当通信器收到创建新处理程序的请求时,应将websocket添加到服务器。新的websocket是ClientWebSocketHandler的一个内容。
如何正确使用函数add_handlers()。 网络服务器如何获得有关新连接的信息? 我在这里缺少什么想法? 动态创建更多处理程序和websockets是否有标准方法?
class Communicator(tornado.websocket.WebSocketHandler):
def initialize(self):
print('communicator initialized')
def open(self):
print('communicator ready to receive messages')
def on_message(self, msg):
print('msg received: ' + msg)
self.create_socket()
def on_close(self):
print('communicator closed')
def create_socket(self):
self.application.add_handlers(
host_pattern = r'/',
host_handlers = [
(r'/clients/123', ClientWebsocketHandler),
]
)
class Application(tornado.web.Application):
def __init__(self):
settings = SWIFT_SERVER_SETTINGS
handlers = [
(r'/', IndexPageHandler),
(r'/', tornado.web.StaticFileHandler, dict(path=settings['static_path'])),
# (r'/clients/123', ClientWebsocketHandler),
(r'/com', Communicator),
]
tornado.web.Application.__init__(self, handlers, **settings)
答案 0 :(得分:0)
您不需要该功能,请将您的代码更改为此
clients=[]
class Communicator(websocket.WebSocketHandler):
def check_origin(self, origin):
return True
def open(self):
clients.append(self)
def on_message(self, message):
print self,message
#return message
self.write_message(message)
def on_close(self):
clients.remove(self)
我将客户端对象添加到全局变量中以后或在另一个函数中,您可以搜索该对象并向该客户端写入消息。