对于在一个类中重写WebSocketApp 的回调函数遇到的问题

在创建websocket连接时,最好开启追踪回溯,不然你都发现不了这个错误!!!

开启这个就相当于可以看到ws得报错信息,我之前没开,一直没报错,花了很长时间解决。

复制代码
websocket.enableTrace(True)

问题描述:

将websocket的on_open()封装到一个类中,就会出现如题问题。

error from callback <bound method CallAI.on_message of <main.CallAI object at 0x000001D8EDC9B4C8>>: on_message() missing 1 required positional argument: 'message'
File "D:\Anaconda\envs\Game\lib\site-packages\websocket\_app.py", line 343, in _callback
callback(*args)

解决方案

问题出在websocket的_callback方法调用上。

python 复制代码
    def _callback(self, callback, *args):
        if callback:
            try:
                if inspect.ismethod(callback):
                    callback(*args)
                else:
                    callback(self, *args)

默认是调用函数,然后传入参数。

当on_open(self, ws)是class内的方法时,会把self也当成一个参数传给_callback,这样它就找不到想要的ws,可以把ws设置为一个类的全局变量,不需要传入到on_open中,直接从全局self.ws调用。

相关推荐
喵手6 分钟前
Python爬虫零基础入门【第七章:动态页面入门(Playwright)·第1节】Playwright 第一次:打开页面、等待元素、拿到渲染后 HTML!
爬虫·python·爬虫实战·动态页面·playwright·python爬虫工程化实战·零基础python爬虫教学
一个无名的炼丹师12 分钟前
DeepSeek+LangGraph构建企业级多模态RAG:从PDF复杂解析到Agentic智能检索全流程实战
python·pdf·大模型·多模态·rag
历程里程碑19 分钟前
哈希3 : 最长连续序列
java·数据结构·c++·python·算法·leetcode·tornado
mjr22 分钟前
基于Netty的WebSocket实时消息推送系统
网络·websocket·网络协议
火云洞红孩儿25 分钟前
2026年,用PyMe可视化编程重塑Python学习
开发语言·python·学习
2401_8414956426 分钟前
【LeetCode刷题】两两交换链表中的节点
数据结构·python·算法·leetcode·链表·指针·迭代法
幻云201027 分钟前
Next.js 之道:从入门到精通
前端·javascript·vue.js·人工智能·python
SunnyDays101130 分钟前
使用 Python 自动查找并高亮 Word 文档中的文本
经验分享·python·高亮word文字·查找word文档中的文字
深蓝电商API35 分钟前
Selenium处理弹窗、警报和验证码识别
爬虫·python·selenium
深蓝电商API40 分钟前
Selenium模拟滚动加载无限下拉页面
爬虫·python·selenium