学网站开发网页制作,做哪些网站可以赚钱的,深圳seo优化排名推广,定制开发app软件websocket-client 是一个在 Python 中广泛使用的库#xff0c;用于创建 WebSocket 客户端并实现与 WebSocket 服务器的双向通信。更多的关于websocket协议介绍#xff0c;可以看看我之前写的文章哦#xff01;
【学习心得】websocket协议简介并与http协议对比http://t.csdn… websocket-client 是一个在 Python 中广泛使用的库用于创建 WebSocket 客户端并实现与 WebSocket 服务器的双向通信。更多的关于websocket协议介绍可以看看我之前写的文章哦
【学习心得】websocket协议简介并与http协议对比http://t.csdnimg.cn/C3hEQ
一、安装和快速入门
pip install websocket-client
两个基本的使用示例来说明如何创建一个 WebSocket 客户端、连接到服务器、发送消息。
1websocket短连接
# 安装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()2websocket长连接
# 导入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(urlurl, on_messageon_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(urlurl,on_openon_open,on_messageon_message,on_erroron_error,on_closeon_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_messageon_message
)# 当你需要关闭连接时
def close_websocket():global should_closeshould_close Truews.close()# 开始监听
ws.run_forever()