python websocketapp on_message() 方法不起作用

2024-01-26

我使用python从nodejs服务器接收流数据,使用以下python代码。 websocket 应该获取实时流数据。我假设 python 的 WebSocketApp 获取流数据的唯一方法是通过 on_message() 。

然而,尽管可以成功建立连接,但 on_message() 从未被调用。 on_open() 仍然被调用,并且 ping 消息已例行发送到服务器以维持心跳。

我在互联网上进行了搜索,但找不到关于发生了什么导致 on_message() 失败的线索?

我测试了本地和远程的连接,连接良好。

import websocket
from websocket import create_connection


import json
try:
    import thread
except ImportError:
    import _thread as thread
import time

def on_message(ws, message):
    print('on msg called')
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws):
    time.sleep(1)
    ws.close()
    print("### closed ###")


def on_open(ws):
    def run(*args):
        time.sleep(1)
        print('sending from run()...')
        ws.send("{\"login\":\"login\",\"password\":\"pw\"}")
        time.sleep(1)

        try:
            print('receiving message...')
            #result =  json.loads(ws.receive())
            #result = ws.recv_frame()
            #result = json.loads(ws.recv())
            #print(result)
        except Exception as e:
            print('failed to receive messages...')
            print(e)
            time.sleep(1)
            ws.close()        

    thread.start_new_thread(run, ())


if __name__ == "__main__":
    try:
        websocket.enableTrace(True)         # show the header part 
        ws = websocket.WebSocketApp("ws://localhost:4010",
                                  subprotocols=["echo-protocol"],
                                  on_message = on_message,
                                  on_error = on_error,
                                  on_close = on_close)
        ws.on_open = on_open
        ws.run_forever(ping_interval=0,ping_timeout=0)
    except KeyboardInterrupt:
        ws.close()

据信,成功检索后,信息将以 json 格式传回。


似乎在您的代码中,调用了 WebsockeApp 类中的 on_message ,而不是您代码中的 on_message 。要在代码中运行 on_message,只需在代码中创建一个自己的类,然后将对象创建更改为

From:

on_message = on_message

To:

ws = websocket.WebSocketApp("ws://localhost:4010", subprotocols=["echo-protocol"], on_message = YourClassName.on_message, on_error = on_error, on_close = on_close)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python websocketapp on_message() 方法不起作用 的相关文章

随机推荐

  • 在 ggplot2 中绘制一系列填充六边形

    我正在尝试在 ggplot2 中创建填充六边形 以六边形间隔的晶格为中心的多边形 的镶嵌 我已经使用 plot 命令完成了此操作 但正在努力将其转换为 ggplot 这是设置的代码 Generate a lattice of points
  • Firebase:Google api 密钥限制不起作用

    Firebase 在 Google API 控制台上为我创建了一个 API 密钥 我在那里添加了一个限制 使其只能由具有特定包名称和指纹的 Android 应用程序使用 不过 我仍然可以使用具有不同包名称的密钥 我更改了 Gradle 的应
  • 夜巡 - 使用 chromedriver

    所以我在堆栈上看到了类似的问题here https stackoverflow com questions 27601103 launch tests in chrome with nightwatchjs on mac os connec
  • 拆分逗号分隔值并将它们映射到 SQLite 中的原始 ID

    我有一张桌子叫articles包含以下格式的数据 id categories 1 123 13 43 2 1 3 15 3 9 17 44 18 3 出于测试目的 您可以使用以下 SQL 命令创建此表 CREATE TABLE articl
  • gen/R.java 应该在 Android Studio 项目中的哪里创建?

    我不知道我的项目中是否存在该文件夹 我已经执行了我的应用程序 但我在我的项目中找不到这个文件夹 它通常位于哪里 构建项目后 android studio 将自动为您的项目创建 R java 您可以在以下位置找到它 your app name
  • 将 IIS Web 应用程序发布到网站根目录?

    我正在尝试使用 Web 部署将 Web 应用程序导入 IIS7 我使用 Visual Studio 的 发布 Web 功能将其打包成 ZIP 文件 当我选择 zip 时 我会进入 应用程序包信息 屏幕 它要求我进行的设置之一是 应用程序路径
  • 从db到css文件?

    我在数据库表中有一小部分 css 项目 我需要将其转换为 css 文件以包含在页面上 我怎样才能在 Rails3 中做到这一点 有没有办法可以直接从 stylesheet link 标记调用它 我是否需要通过一些 ruby 来打开文件并将其
  • 如何修复模块“tensorflow”没有属性“get_default_session”

    请帮忙解决这个问题 我使用 ImageAI 来检测汽车 但它不起作用 我是这方面的新手 抱歉 from imageai Detection import ObjectDetection import os execution path os
  • PDFKit - PDFPageOverlayViewProvider 与 PKCanvasView 不转发触摸事件 - WWDC22 会话 10089

    我正在尝试利用PDFPageOverlayViewProvider的议定书PDFView类在PDFKitiOS 16 引入的框架 用于显示PencilKit PKCanvasView位于 PDF 文档之上 以便用户可以在 PDF 上绘制内容
  • 应用类和属性选择器

    我想设置这个元素的样式
  • 在 Docker 容器中运行旧的 Linux 版本?

    我有一个二进制应用程序 无法在 Feisty 之后的 Ubuntu 版本上运行 是否可以构建包含 Feisty 的 Docker 映像并在我的现代系统上运行它 我将添加比评论中允许的更多细节 这些是我用来获取在 Docker 0 7 1 容
  • 在 Windows 10 上安装 PyPotrace

    我想在我的 Windows 10 计算机上安装 Potrace 并将其与 python 2 7 5 一起使用 我正在按照该网站的安装说明进行操作 https pypi python org pypi pypotrace https pypi
  • C# TextWriter 每 1024 个字符插入换行符

    我正在使用文本编写器将数据写入文本文件 但如果该行超过 1024 个字符 则会插入换行符 这对我来说是一个问题 关于如何解决此问题或增加字符限制有什么建议吗 textWriter WriteLine strOutput 非常感谢 使用 Wr
  • 将对象传递给节点错误类返回不可访问的对象

    我要返回一个Error对象 我向其传递一个对象 而不是简单的消息 if err return myCallback new Error error code sample machine readable code error messag
  • MySQL php使用另一列获取列(使用用户名获取密码)

    成功验证数据库中存在用户名后 我需要验证密码是否也匹配 因此 我需要从数据库中检索哈希密码 对吗 或者我还有其他选择吗 我使用 PHP 5 5 API bcrypt 进行哈希处理 当我从数据库获取密码时 我的代码会给我一个 500 内部服务
  • JavaScript 中“{ }”的含义

    给变量赋值是什么意思 意思是 这是将其初始化为函数吗 我的 javascript 文件中有这样的代码 GLGE Wavefront function uid GLGE Assets registerAsset this uid this m
  • 从 R 中的文本列模糊提取名称(存储在向量中)

    我有一些包含文本的数据 我想尝试从文本中提取公司名称 数据如下 d lt data frame textColumn c Apple CEO reports positive growth in Iphone sales Apple s q
  • matlab中如何按顺序处理图像

    我有一个包含大约 1000 张图像的目录 在我的 matlab 代码中 我必须按名称顺序处理这些图像 img1 jpg img2 jpg 等 有没有办法按顺序从图像目录中读取 以便处理 img1 jpg 然后处理 img2 jpg 等等 先
  • 如何在 simple_form gem 中使用 Bootstrap 的输入组

    环境 红宝石2 5 1 轨道 5 2 1 简单表格4 0 1 目前的行为 我按照中的例子http simple form b ootstrap plataformatec com br examples input group http s
  • python websocketapp on_message() 方法不起作用

    我使用python从nodejs服务器接收流数据 使用以下python代码 websocket 应该获取实时流数据 我假设 python 的 WebSocketApp 获取流数据的唯一方法是通过 on message 然而 尽管可以成功建立