Tornado - 通过 websocket 同时监听多个客户端

2023-12-08

我想使用 Tornado 在 Python 中创建 websocket 服务器。这是 API:http://tornado.readthedocs.org/en/latest/websocket.html

在 API 中,我没有看到获取客户端句柄的选项。如何同时处理多个客户端连接?
例如,on_message(self, message)方法直接给出消息。不包含已连接的客户端的任何句柄。
我想接收客户端请求,进行一些处理(这可能需要很长时间),然后回复给客户端。我正在寻找一个客户端句柄,我可以用它稍后回复。


据我了解你想要这样的东西:

class MyWebSocketHandler(tornado.websocket.WebSocketHandler):
    # other methods
    def on_message(self, message):
        # do some stuff with the message that takes a long time
        self.write_message(response)

每个 WebSocket 连接都有自己的来自 WebSocketHandler 子类的对象。

您甚至可以保存连接并在其他地方使用它:

ws_clients = []

class MyWebSocketHandler(tornado.websocket.WebSocketHandler):
    # other methods
    def open(self):
        if self not in ws_clients:
            ws_clients.append(self)

    def on_close(self):
        if self in ws_clients:
            ws_clients.remove(self)

def send_message_to_all(self, message):
    for c in ws_clients:
        c.write_message(message)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tornado - 通过 websocket 同时监听多个客户端 的相关文章

随机推荐

  • Oracle SQL - 将表行透视为列并在透视中使用子查询

    我正在处理 Oracle 12c R1 db 并有一个包含示例数据的示例视图 如下所示 视图名称 CUST HOTEL VIEW Customer Hotel Booked Status John Smith Beverly Hills B
  • 如何使python的日期时间对象以小写形式显示AM和PM?

    在这里 https docs python org 2 library datetime html strftime and strptime behavior它说 p显示上午 下午 它显示了这个 AM PM en US am pm de
  • 下面的字符串连接是如何工作的

    按照以下字符串连接时Java字符串池如何工作 对话 String a hello world String b hello world boolean compare a b The compare应该是正确的 但是 我有以下代码 Stri
  • Python如何确保调用len时__len__的返回值为整数?

    class foo def init self data self data data def len self return self data 如果我通过传递一个字符串来运行它data调用时出现错误len在这个类的一个实例上 具体来说我
  • MongoDB C# 查询包含属性值的对象数组

    我的文档中有一个数组属性 我们将其称为 arrayProperty 如下所示 id mongoObjectIdThingy arrayProperty string1 aString otherProperty somethingelse
  • .environmentObject() 视图运算符与 @EnvironmentObject 的目的是什么?

    我正试图从这里众所周知的新手深渊中爬出来 我开始掌握 EnvironmentObject 的使用 直到我注意到文档中的 environmentObject 视图运算符 这是我的代码 import SwiftUI struct Seconda
  • 使用 hive SQL 提取不同字符之间的字符串

    我有一个名为 geo data display 的字段 其中包含国家 地区 地区和 DMA 这 3 个值包含在 和 字符之间 第一个 和第一个 之间的国家 地区 第二个 和第二个 之间的区域以及第三个 和第三个 之间的 DMA 这是该表的可
  • 无法在 YII2 中安装任何 Composer 包

    我正在尝试在 YII2 中安装 Composer 的包库 但是从命令提示符运行命令后我收到以下错误 我的作曲家命令是 composer phar require kartik v yii2 widget datetimepicker yii
  • Gson用数组解析Json

    我在构建一个能够按照我的预期解析 gson 的类时遇到一些麻烦 我创建了一个类 public class JsonObjectBreakDown public String type public List
  • 如何从动态创建的 EditText 字段中获取值?

    我对以下场景有点困惑 我有一个添加按钮 我用它来添加一些EditText字段 当我点击保存按钮时 我应该从EditTexts 如何从所有 EditText 字段中获取这些值 你可以这样做 将您以编程方式创建的所有 EditText 字段存储
  • 在 REST API 中支持多种语言

    我有一组城市 正在为其创建 REST API 我的第一个 REST API 每个城市都有一些与语言无关的信息 例如成立日期和人口数量 城市还有一些取决于语言的内容 例如标题和简短描述 在内部 城市文件具有以下格式 population 90
  • 每个表格行的删除按钮

    我成功地使用以下代码从数据库中读取并显示数据 http pastebin com rjZfBWZX我还为表的每一行生成一个删除按钮 单击删除按钮会调用 obrisi php 它应该删除该行 但我搞砸了一些东西 S 这是 obrisi php
  • “\z”锚点在 Python 正则表达式中不起作用

    我有一个下面的正则表达式 A d 5 A Z 2 a zA Z0 9 3 7 TMP d 5 A Z 2 d 3 7 d 2 z 我正在检查下面的字符串 我猜第一个和第三个应该返回匹配 第二个应该返回不匹配 但我没有在所有 3 项上都匹配
  • Ruby on Rails - $rails 服务器失败,因为无法找到 uglifier gem

    我正在开始我的第一个 Ruby 项目 我正在遵循的教程让我使用 Rails 当我尝试跑步时 rails server我收到一条错误消息 找不到 gemuglifier gt 1 3 0 x86 mingw32在这台机器上可用的宝石中 我在使
  • 声明类型不同时的不同行为(Set 与 TreeSet)

    var set TreeSet 5 4 3 2 1 println set val diffSet TreeSet Int set if I change above code to val diffSet Set Int set the
  • 可编辑标签控件

    有谁知道我如何创建可编辑标签控件 我需要我的用户能够编辑标签 还可以更改其样式信息的部分 但在网上找不到任何有用的信息 如有任何帮助 我们将不胜感激 谢谢 您可以创建自定义控件 需要一些工作 该控件内部可以有一个标准标签控件 当用户单击该标
  • 斯坦福 NER:我可以在代码中同时使用两个分类器吗?

    在我的代码中 我得到Person来自第一个分类器的识别 对于我制作的第二个分类器 我添加了一些要识别或注释的单词组织但它没有注释Person 我需要从他们两个那里得到好处 我该怎么做呢 我正在使用 Netbeans 这是代码 String
  • 调用Web服务时出错

    我无法致电web service即使添加后kSOAP 2 library jar file 源代码 package com example web import org ksoap2 SoapEnvelope import org ksoa
  • MonadException 实例未推导

    也许我在这里做了一些愚蠢的事情 但我得到 No instance for MonadException Ti arising from a use of getInputLine 在代码示例中 module Foo where import
  • Tornado - 通过 websocket 同时监听多个客户端

    我想使用 Tornado 在 Python 中创建 websocket 服务器 这是 API http tornado readthedocs org en latest websocket html 在 API 中 我没有看到获取客户端句