繁体   English   中英

如何在tornado.websockets中向所有活动客户端广播消息?

[英]How to broadcast message to all active clients in tornado.websockets?

Websocket的 Tornado实现中,需要使用WebSocketHandler作为RequestHandler的子类来处理与Websocket客户端的通信。 文档中的示例演示了如何在响应客户的消息时将消息写回到客户端,但是文档并未明确说明对不参与交换的客户端实施广播的正确方法是什么(例如给所有活跃客户)。

如何在tornado.websocket中向所有活动连接的websocket客户端广播消息? 我发布了当前的方法作为答案之一。

我现在使用的解决方案是在一个稍微相关的问题中提到的,并且在一个聊天示例中也得到了使用。 但是,我想了解是否有更好的方法,或者是否确实应该这样做。

编辑1:使用相同方法的另一个相关问题: 使用龙卷风广播消息

我找到了一种方法,但是我不确定这是否应该真正解决,就是将WebSocketHandler添加到open中的全局列表中:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM