2017-06-14 74 views
0

TornadoWebsocket的实现中,需要使用RequestHandler的子类WebSocketHandler来处理与websocket客户端的通信。 docs中的示例演示了如何在回复消息时将消息写回客户端,但文档没有说清楚实施向未参与交换的客户端广播的正确方式(例如给所有活跃的客户)。如何将消息广播到tornado.websockets中的所有活动客户端?

应该如何将消息广播到tornado.websocket中所有主动连接的websocket客户端?我把我目前的做法作为答案之一。

我现在使用的解决方案是在slightly related question中提到的,也用于一个聊天示例。不过,如果有更好的办法,或者如果这个办法确实如此,我想知道。

EDIT1:Broadcasting a message using Tornado

回答

1

的一种方式,我发现,但我不知道这是否是一个应该如何真正去了解它只是增加了WebSocketHandler在开放全局列表:使用相同的方法的另一个相关的问题:

active_clients = set() 

class Handler(WebSocketHandler): 

    def open(self): 
     active_clients.add(self) 

    def on_message(self, args): 
     for client in active_clients: 
      client.write_message('msg') # will be written to every client 

    def on_close(self): 
     active_clients.remove(self) 
相关问题