方法名称 | 方法解释 |
---|---|
on_open | 发送参数给服务器调用该方法 |
on_message | 接受服务器返回信息调用该方法 |
on_error | 程序报错调用该方法 |
on_close | 程序断开调用该方法 |
- 代码如下所示
#!/usr/bin/python
# -*- coding: utf-8 -*-
#@Users: LiMu
#@Files:websocket_long.py
#@Times: 2021/12/29
#@Software:PyCharm
import os
import sys
import time
import websocket
import json
import zlib
from func_seal.case_premise import get_premise
class socket_long(object):
def __init__(self,url,premises):
self.premise = premises
#当报错module 'websocket' has no attribute 'enableTrace'时使用不报错可以注释
websocket.enableTrace(True)
#向服务器建立连接
self.ws = websocket.WebSocketApp(url=url,on_message = self.on_message,on_error = self.on_error,on_close = self.on_close)
self.ws.on_open = self.on_open
#发送心跳时间间隔ping_interval,心跳超时时间ping_timeout
self.ws.run_forever(ping_interval=3, ping_timeout=1)
#接受消息调用方法on_message()
def on_message(self,ws,message):
#对服务器返回数据进行处理
message = zlib.decompress(message)
message = json.loads(message)
#筛选服务器返回数据,只打印用例相关接口的数据
if message["HandleCode"] != "":
print("{} 返回信息:{}".format(message["HandleCode"], message))
#程序调错时调用方法on_error()
def on_error(self,ws,error):
print("{}返回错误:{}".format(ws,error))
#主动断开时调用方法on_close()
def on_close(self,ws):
self.ws.close()
print("{}关闭链接{}".format(ws,"closed"))
#建立连接时调用方法on_open()
def on_open(self,ws):
time.sleep(2)
#便利用例并把参数发送给服务器
for i in self.premise:
print("{} 参数发送:{}".format(i["HandleCode"], i))
ws.send(json.dumps(i))
print("-" * 180)
if __name__ == '__main__':
resp = socket_long("ws://XX.XX.XX.XX:YYYY/client",get_premise().get_premise())
- 日志如下所示
D:\Python37\python.exe E:/Pyfiles/func_seal/websocket_long.py
--- request header ---
GET /client HTTP/1.1
Upgrade: websocket
Host: 10.252.0.41:10214
Origin: http://10.252.0.41:10214
Sec-WebSocket-Key: PPnd2DBwCPYT4wTfXmfY+A==
Sec-WebSocket-Version: 13
Connection: Upgrade
-----------------------
--- response header ---
HTTP/1.1 101 Switching Protocols
Server: websocket-sharp/1.0
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: R1xQoHuKLfYdE90qd0wYnhLvGt0=
-----------------------
日志截图
作者:解语者
链接:https://www.jianshu.com/p/2aef1da6950c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。