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

在做接口测试过程中,使用到了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://192.168.10.63:8090/v2/port/streaming?vend=Test",
               header=["x-token:ajKfZgQAf6vIddwC",
                       "x-tenant:T001124",
                       "x-server:1026"])
    if ws.connected:
        #接收实时数据,并打印出来
        print(ws.recv())
        #关闭连接 
        ws.close()

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

{"type":"Order","data":[{"receivedTime":1523261141,"orderId":"152636208","symbol":"NZDUSD",{"cmd":"4","digits":"5","state":"5"},"account":"2105224075","comment":""}]}

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

                                                          <OVER>

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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/liujingqiu/article/details/79868230