当前位置: 首页 > news >正文

【学习心得】Python好库推荐——websocket-client

        websocket-client 是一个在 Python 中广泛使用的库,用于创建 WebSocket 客户端并实现与 WebSocket 服务器的双向通信。更多的关于websocket协议介绍,可以看看我之前写的文章哦!

【学习心得】websocket协议简介并与http协议对比icon-default.png?t=N7T8http://t.csdnimg.cn/C3hEQ

一、安装和快速入门

pip install websocket-client

两个基本的使用示例来说明如何创建一个 WebSocket 客户端、连接到服务器、发送消息。

(1)websocket短连接

# 安装websocket-client库
# pip install websocket-client# 导入websocket
import websocket# 创建客户端实例
ws = websocket.WebSocket()# 连接指定的ws服务器
ws.connect("ws://echo.websocket.events")   # 这个网址是官方测试网址# 发送消息
ws.send("Hello!")
# print(ws.send("Hello!"))  # 返回的是你发送信息的字节大小,并不是真的服务器响应给你的数据# 接收响应
res = ws.recv()
print(res)  # recv方法才能得到服务器响应给你的数据# 关闭ws连接
ws.close()

(2)websocket长连接

# 导入websocket-client包
import websocket# 定义on_message回调函数用来处理 websocket事件——客户端接收服务端数据时触发
def on_message(ws_app, message):print(message)  # 当客户端接收到服务器响应回的数据时,把他打印出来显示一下# 实例化一个ws客户端
url = "wss://testnet-explorer.binance.org/ws/block"
ws = websocket.WebSocketApp(url=url, on_message=on_message)  # 传入的是回调函数所以不要小括号# 开启ws长连接
# 启动一个无限循环,保持WebSocket连接的持续开放状态,并监听来自服务器的数据流。
# 当有新的消息到达时,将通过 on_message 回调函数处理这些消息。
ws.run_forever()

二、websocket的所有事件介绍

WebSocket 对象的相关事件:

事件事件回调函数描述
openon_open连接建立时触发
messageon_message客户端接收到服务器数据时触发
erroron_error通信发生错误时触发
closeon_close连接关闭时触发
# 导入websocket-client库
import websocket# 定义on_message事件回调函数
def on_message(ws_app, message):print("接收到服务器响应:", message)# 定义on_error事件回调函数
def on_error(ws_app, error):print(error)# 定义on_open事件回调函数
def on_open(ws_app):print('已连接到WebSocket服务器')# 定义on_close事件回调函数
def on_close(ws_app):print('已关闭和WebSocket服务器的连接')# 实例化一个ws客户端
url = "ws://echo.websocket.events"
ws = websocket.WebSocketApp(url=url,on_open=on_open,on_message=on_message,on_error=on_error,on_close=on_close,
)# 开启长连接,开始监听
ws.run_forever()# 发送信息
ws.send("hello!")# 关闭连接
ws.close()

三、如何主动退出长连接?

"""
设置一个退出标志:
在运行 run_forever() 的外部定义一个全局变量作为退出标志,
并在需要关闭连接的地方将其设置为True。
然后,在 on_message() 或其他回调函数(如 on_error()、on_close() 等)中检查这个标志,
当满足特定条件或接收到信号时调用 ws_app.close()。
"""
import websocketshould_close = Falsedef on_message(ws_app, message):print(message)# 检查是否需要关闭连接if should_close:ws_app.close()ws = websocket.WebSocketApp("wss://testnet-explorer.binance.org/ws/block", on_message=on_message
)# 当你需要关闭连接时
def close_websocket():global should_closeshould_close = Truews.close()# 开始监听
ws.run_forever()

相关文章:

【学习心得】Python好库推荐——websocket-client

websocket-client 是一个在 Python 中广泛使用的库,用于创建 WebSocket 客户端并实现与 WebSocket 服务器的双向通信。更多的关于websocket协议介绍,可以看看我之前写的文章哦! 【学习心得】websocket协议简介并与http协议对比http://t.csdn…...

3.1_8 两级页表

文章目录 3.1_8 两级页表(一)单级页表存在的问题(二)如何解决单级页表的问题?(三)两级页表的原理、地址结构(四)如何实现地址变换(五)需要注意的几…...

【SysBench】sysbench-1.20 命令速查表

1、通用语法 The general command line syntax for sysbench is: sysbench [options]... [testname] [command] testname is an optional name of a built-in test (e.g. fileio, memory, cpu, etc.), or a name of one of the bundled Lua scripts (e.g. oltp_read_only), or…...

neo4j网页无法打开,启动一会儿后自动关闭,查看neo4j status显示Neo4j is not running.

目录 前情提要User limit of inotify watches reached无法访问此网站 前情提要 公司停电,服务器未能幸免,发现无法访问此网站,http://0.0.0.0:7474 在此之前都还好着 User limit of inotify watches reached (base) [rootlocalhost ~]# n…...

一键卸载和安装 nvidia、cuda、cudnn、tensorrt

1. 卸载 nvidia、cuda、cudnn、tensorrt sudo apt purge \"cuda*" \"libcudnn*" \"libnvinfer*" \"libnvonnxparsers*" \"libnvparsers*" \"tensorrt*" \"nvidia*&…...

LeetCode 389. 找不同

文章目录 一、题目二、C 题解 一、题目 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1: 输入:s “abcd”, t “abcde” 输出&…...

科技云报道:两会热议的数据要素,如何拥抱新技术?

科技云报道原创。 今年全国两会上,“数字经济”再次成为的热点话题。 2024年政府工作报告提到:要健全数据基础制度,大力推动数据开发开放和流通使用;适度超前建设数字基础设施,加快形成全国一体化算力体系&#xff1…...

【linux】进程管理:进程控制块、进程号、fork创建进程、特殊进程及exec函数族解析

一、进程的概述 可执行程序运行起来后(没有结束之前),它就成为了一个进程。程序是存放在存储介质上的一个可执行文件,而进程是程序执行的过程。进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,进程是…...

【DL经典回顾】激活函数大汇总(八)(Maxout Softmin附代码和详细公式)

激活函数大汇总(八)(Maxout & Softmin附代码和详细公式) 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不…...

Docker进阶:深入了解 Dockerfile

Docker进阶:深入了解 Dockerfile 一、Dockerfile 概述二、Dockerfile 优点三、Dockerfile 编写规则四、Dockerfile 中常用的指令1、FROM2、LABEL3、RUN4、CMD5、ENTRYPOINT6、COPY7、ADD8、WORKDIR9、 ENV10、EXPOSE11、VOLUME12、USER13、注释14、ONBUILD 命令15、…...

【LeetCode热题100】206. 反转链表(链表)

一.题目要求 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 二.题目难度 简单 三.输入样例 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2…...

电玩城游戏大厅计时软件怎么用,佳易王计时计费管理系统软件定时语音提醒操作教程

电玩城游戏大厅计时软件怎么用,佳易王计时计费管理系统软件定时语音提醒操作教程 一、前言 以下软件操作教程以 佳易王电玩计时计费软件V18.0为例 说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、软件计时计费,只需点击开…...

selenium也能过某数、5s盾..

文章转载于:selenium也能过某数、5s盾… 直接安装: pip install undetected_chromedriver运行代码: import undetected_chromedriver as uc import timedriver uc.Chrome(executable_pathrC:\Users\chromedriver.exe,version_main111) driver.get(网…...

mysql笔记:8. 视图

文章目录 创建视图修改视图删除视图通过视图更新数据1. 插入数据2. 更新数据3. 删除数据 查看视图信息1. DESCRIBE2. SHOW TABLE STATUS3. SHOW CREATE VIEW4. 在views表中查看 数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的列和行数据。行…...

指针的基本概念和用法

指针的基本概念 每个变量都被存放在从某个内存地址(以字节为单位)开始的若干字节中 “指针”也被称作“指针变量”,大小为4个字节(在64位编译器中,也优肯为8个字节)的变量,其内容代表一个内存地…...

工作随记:oracle重建一张1T数据量的大表

文章目录 一、删除测试表二、重命名旧表:三、验证:四、检查alert日志和昨天到今天的统计信息任务收集是否正常 一、删除测试表 #xshell登录用户hthis用户连接登录处理: sqlplus ht/"123456" sqlplus ht/"123456"10.8.5.…...

使用timm库的一些知识点

timm(Torch Image Models)是一个在PyTorch上构建的图像模型库,它提供了一系列预训练的深度学习模型,使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时,如何确定模型的名字 使用…...

一种基于宏和serde_json实现的rust web中统一返回类

本人rust萌新,写web碰到了这个,基于ChatGPT和文心一言学了宏,强行把这玩意实现出来了,做个学习记录,如果有更好的方法,勿喷。 先看效果,注意不支持嵌套,且kv映射要用>(因为它这个…...

每周一算法:A*(A Star)算法

八数码难题 题目描述 在 3 3 3\times 3 33 的棋盘上,摆有八个棋子,每个棋子上标有 1 1 1 至 8 8 8 的某一数字。棋盘中留有一个空格,空格用 0 0 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局…...

爬虫练习:获取某网站的房价信息

一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(房天下数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [名称, 地点,价格,总价,联系电话]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer.writeheader…...

液态神经网络在医疗诊断中的落地案例:如何用LNNs处理动态心电图数据

液态神经网络在医疗诊断中的落地案例:如何用LNNs处理动态心电图数据 当心电图仪器的电极贴片接触患者皮肤的瞬间,那些起伏的波形不仅是心脏跳动的印记,更是一组充满噪声的复杂时间序列数据。传统深度学习模型在处理这类动态生理信号时&#x…...

Jetson Nano/Orin上离线语音识别的实战踩坑:从Whisper到Sherpa-onnx,我最终选了它

Jetson Nano/Orin离线语音识别实战:从Whisper到Sherpa-onnx的技术选型与避坑指南 在边缘计算设备上实现高质量的离线语音识别(ASR)一直是开发者面临的挑战。Jetson系列作为NVIDIA推出的边缘AI计算平台,凭借其强大的GPU加速能力和低…...

Qwen3.5-2B图文对话教程:‘描述这张图’‘提取表格数据’‘生成营销文案’三类实操

Qwen3.5-2B图文对话教程:描述这张图提取表格数据生成营销文案三类实操 1. 认识Qwen3.5-2B轻量化多模态模型 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这个模型特别适合在资源有限…...

Captain AI帮你一次过审,上品不再被驳回!

Ozon上品审核驳回、上架后违规下架,是90%以上卖家都踩过的坑。很多卖家遇到上品问题,会用DeepSeek等通用AI查询规则,却往往因为信息滞后、规则解读错误,反复修改仍无法过审,白白错过新品流量黄金期。一、Captain AI能帮…...

新手必看:OWL ADVENTURE治愈系AI,手把手教你检测‘坏图片’

新手必看:OWL ADVENTURE治愈系AI,手把手教你检测坏图片 1. 为什么需要检测"坏图片"? 在数字世界中,图片不仅仅是美丽的风景或可爱的宠物照片。它们也可能成为网络威胁的载体。想象一下这些场景: 你收到一…...

用QT5的QTcpSocket做一个TCP调试助手:连接单片机/服务器测试数据收发

用QT5打造专业级TCP调试助手:从基础通信到工业级工具开发 在嵌入式开发和物联网项目中,TCP通信调试是每个工程师都会遇到的常规需求。无论是与STM32单片机通信,还是测试PLC设备的网络功能,亦或是验证云服务器的数据接口&#xff0…...

PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92%

PyTorch 2.8 GPU算力优化部署教程:RTX 4090D显存利用率提升至92% 1. 环境准备与快速验证 在开始深度学习项目前,确保你的硬件配置符合以下要求: 显卡:NVIDIA RTX 4090D 24GB显存驱动版本:550.90.07或更高系统内存&a…...

找不到msvcr120.dll解决方法:2026年有效的一键修复与手动安装步骤

正玩着游戏或做着设计图,屏幕突然弹出“找不到msvcr120.dll”的提示,相信很多Windows用户都遇到过这种令人抓狂的时刻。这个错误意味着你的电脑缺少了某个软件或游戏运行所必需的“零件”。别担心,这个零件就是Microsoft Visual C 2013运行库…...

QT老版本下载被拒?手把手教你用迅雷搞定5.12.12和4.8.7离线安装包

QT老版本下载难题破解:从地址拼接到离线安装全指南 遇到QT老版本下载被拒的提示?别急着放弃。对于需要维护遗留系统或确保项目兼容性的开发者来说,获取特定版本的QT框架往往成为一道必须跨越的门槛。本文将带你深入理解QT官方下载机制&#…...

Qwen3.5-9B多模态能力解析:图文输入联合建模+VL变体兼容性说明

Qwen3.5-9B多模态能力解析:图文输入联合建模VL变体兼容性说明 1. 模型概述与核心能力 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在多模态理解和长上下文处理方面展现出卓越性能。作为当前开源社区的重要贡献,该模型特别强化了图文联合…...