Python3.6.1 websocket 需要传header来建立长连接 模拟的客户端 脚本编写

xiaoxiao2021-02-28  47

在做接口测试过程中,使用到了websocket 来建立长连接,尝试过使用Jmeter 工具来直接测试,不知道什么样的原因总是报 cannot connect to the remote server,但是实际上,server是可以remote上去的。并且诡异的是,使用websocket 外部的 一个网址(ws://echo.webscoket.org/),是可以在jmeter上使用websocket 来建立连接成功的。 但是在测试我们产品的时候,却不行。这里与产品的websocket长连接唯一不同的是产品的接口需要传header,即使将header在Jmeter工具上加上,也是不能成功建立一个连接,试了多次,还找developer看了下code以及服务器是否已经连接完好。检查环境都是ok的,试了几次jmeter,只有放弃,改使用Python脚本来实现。 相对来说,使用Python脚本,只需要模拟客户端(jmeter工具也相当于一个模拟客户端),那么发送请求数据即可,这里需要注意的是 传上需要的header 。 在进行脚本编写前,需要先安装上python 的 websocket-client 库。 安装方法比较简单: 进入到C:\Python36\Scripts 文件夹路径下,使用命令:

pip install websocket-client

安装成功后,开始我们的模拟客户端脚本编写,具体如下:

# -*- coding:utf-8 -*- import time from websocket import create_connection import websocket while 1: ws=websocket.WebSocket() #建立websocket连接,这里传入了 header ,需要注意header的写入方式 ws.connect("ws://xx.xx.xx.xx 8000/port/streaming?vend=Test", header=["x-token:xxxxxxxxxxxxxx", "x-tenant:T0014", "x-server:1026"]) if ws.connected: #接收实时数据,并打印出来 print(ws.recv()) #关闭连接 ws.close()

运行后,可得到实时数据:

{"type":"Order","data":[{"receivedTime":1523261141,"orderId":"152636208","symbol":"NZD"}

在脚本调试过程中,遇到过一些问题,那么仔细查看python的websocket 库源码,然后可以看到是websocket 是如何传递 header,并怎样建立长连接的。

<OVER>

更多测试交流,可以加好友

转载请注明原文地址: https://www.6miu.com/read-2624605.html

最新回复(0)