|
websocket-client是一个在Python中广泛使用的库,用于创建WebSocket客户端并实现与WebSocket服务器的双向通信。更多的关于websocket协议介绍,可以看看我之前写的文章哦!【学习心得】websocket协议简介并与http协议对比http://t.csdnimg.cn/C3hEQ一、安装和快速入门pipinstallwebsocket-client两个基本的使用示例来说明如何创建一个WebSocket客户端、连接到服务器、发送消息。(1)websocket短连接#安装websocket-client库#pipinstallwebsocket-client#导入websocketimportwebsocket#创建客户端实例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包importwebsocket#定义on_message回调函数用来处理websocket事件——客户端接收服务端数据时触发defon_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库importwebsocket#定义on_message事件回调函数defon_message(ws_app,message):print("接收到服务器响应:",message)#定义on_error事件回调函数defon_error(ws_app,error):print(error)#定义on_open事件回调函数defon_open(ws_app):print('已连接到WebSocket服务器')#定义on_close事件回调函数defon_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()。"""importwebsocketshould_close=Falsedefon_message(ws_app,message):print(message)#检查是否需要关闭连接ifshould_close:ws_app.close()ws=websocket.WebSocketApp("wss://testnet-explorer.binance.org/ws/block",on_message=on_message)#当你需要关闭连接时defclose_websocket():globalshould_closeshould_close=Truews.close()#开始监听ws.run_forever()'运行运行
|
|