【学习心得】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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB | MATLAB版玫瑰祝伟大女性节日快乐!!

妇女节到了,这里祝全体伟大的女性,节日快乐,事业有成,万事胜意。 作为MATLAB爱好者,这里还是老传统画朵花叭,不过感觉大部分样式的花都画过了,这里将一段很古老的2012年的html玫瑰花代码转成MA…

HarmonyOS (一)ArkTS起源及UI框架

目录 1 引言 2 框架 3 ArkUI 4 特点 5 总结 1 引言 Mozilla创造了JS,Microsoft创建了TS,Huawei进一步推出了ArkTS。 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,扩展了声明式UI、…

WPF —— Border、Frame控件详解

一:Border控件 1.Border介绍 Border(边框)是一个装饰的控件,此控件绘制一个边框、一个背景。用border标签包括目标标签。 不能有多个子元素,要想有多个子元素,多个子元素放在一个父元素下。或者放到grid标…

备忘 clang diagnostic 类的应用示例 ubuntu 22.04

系统的ncurses环境有些问题 通过源码安装了ncurses6.3后,才可以在 llvmort-18.1.rc4中编译通过示例: 1,折腾环境 ncurses-6.3$ ./configure ncurses-6.3$ make -j ncurses-6.3$ sudo make install sudo apt install libtinfo5 sudo…

『运维备忘录』之 iptables 防火墙使用指南

前言 iptables 是一个配置 Linux 内核防火墙的命令行工具,它是用来设置、维护和检查Linux内核的IP包过滤规则的。本文将介绍 iptables 的基础知识和使用示例。 注意:红帽/红旗/CentOS等 7 版本以上已改为使用 firewalld 作为防火墙替换iptables。 一、基…

基于亚马逊云科技新功能:Amazon SageMaker Canvas 无代码机器学习—以构建货物的交付状态检测模型实战为例深度剖析以突显其特性

授权说明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道。 亚马逊云科技 2023 re:Invent 全球大会是亚马逊云科技举办的一场技术盛会,…

项目解决方案:视频监控接入和录像系统设计方案(上)

目 录 1.概述 2. 建设目标及需求 2.1建设总目标 2.2 需求描述 2.3 需求分析 3.设计依据与设计原则 3.1设计依据 3.2 设计原则 (1)、先进性与适用性 (2)、经济性与实用性 (3)、可靠性与…

centos离线安装 k8s (实操可用)

全部安装包rpm下载(已整理好k8s和docker):链接:https://pan.baidu.com/s/1ATv8BPijhvIKWz4hMnkx6Q?pwdt5db 提取码:t5db 将文件下载以后,解压到服务器 #执行所有docker-rpm包 yum -y localinstall *.rpm…

Java面试(4)之 Spring Bean生命周期过程

一, 整个加载的完整链路图 更详细的生命周期函数链路图(仅供参考) 二, Bean实例化的四种方式: 1, 无参构造器(默认且常用)6 2, 静态工厂方法方式(factory-method指定实例化的静态方法) 3, 实例工厂方法方式(factory-bean指定bean的name,factory-method指定实例化方法) 4, 实…

NineData与OceanBase完成产品兼容认证,共筑企业级数据库新生态

近日,云原生智能数据管理平台 NineData 和北京奥星贝斯科技有限公司的 OceanBase 数据库完成产品兼容互认证。经过严格的联合测试,双方软件完全相互兼容、功能完善、整体运行稳定且性能表现优异。 此次 NineData 与 OceanBase 完成产品兼容认证&#xf…

3.7作业

一 1)应用层 负责处理不同应用程序之间的通信,需要满足提供的协议,确保数据发送方和接收方的正确 应用层提供的协议: (2)表示层 负责网络中通信的数据的编码和格式,确保通信过程中…

【Proteus仿真】【STM32单片机】井盖安全检测装置设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、角度/可燃气检测传感器等。 主要功能: 系统运行后,LC…