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://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>
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值