当前位置:   article > 正文

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

【学习心得】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短连接

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

(2)websocket长连接

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

二、websocket的所有事件介绍

WebSocket 对象的相关事件:

事件事件回调函数描述
openon_open连接建立时触发
messageon_message客户端接收到服务器数据时触发
erroron_error通信发生错误时触发
closeon_close连接关闭时触发
  1. # 导入websocket-client库
  2. import websocket
  3. # 定义on_message事件回调函数
  4. def on_message(ws_app, message):
  5. print("接收到服务器响应:", message)
  6. # 定义on_error事件回调函数
  7. def on_error(ws_app, error):
  8. print(error)
  9. # 定义on_open事件回调函数
  10. def on_open(ws_app):
  11. print('已连接到WebSocket服务器')
  12. # 定义on_close事件回调函数
  13. def on_close(ws_app):
  14. print('已关闭和WebSocket服务器的连接')
  15. # 实例化一个ws客户端
  16. url = "ws://echo.websocket.events"
  17. ws = websocket.WebSocketApp(
  18. url=url,
  19. on_open=on_open,
  20. on_message=on_message,
  21. on_error=on_error,
  22. on_close=on_close,
  23. )
  24. # 开启长连接,开始监听
  25. ws.run_forever()
  26. # 发送信息
  27. ws.send("hello!")
  28. # 关闭连接
  29. ws.close()

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

  1. """
  2. 设置一个退出标志:
  3. 在运行 run_forever() 的外部定义一个全局变量作为退出标志,
  4. 并在需要关闭连接的地方将其设置为True。
  5. 然后,在 on_message() 或其他回调函数(如 on_error()、on_close() 等)中检查这个标志,
  6. 当满足特定条件或接收到信号时调用 ws_app.close()。
  7. """
  8. import websocket
  9. should_close = False
  10. def on_message(ws_app, message):
  11. print(message)
  12. # 检查是否需要关闭连接
  13. if should_close:
  14. ws_app.close()
  15. ws = websocket.WebSocketApp(
  16. "wss://testnet-explorer.binance.org/ws/block",
  17. on_message=on_message
  18. )
  19. # 当你需要关闭连接时
  20. def close_websocket():
  21. global should_close
  22. should_close = True
  23. ws.close()
  24. # 开始监听
  25. ws.run_forever()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/210971
推荐阅读
相关标签
  

闽ICP备14008679号