实战webSocket压测(三)Jmeter真实接口联调

背景:

接口地址为:ws://sunlei.demo
接口说明:websocket接口,首次连接,通过Text请求设置开启标志,然后通过wav文件流传输,达到后端服务可以根据传输信息进行解析满足指定标准后,websocket返回请求成功信息。

后端研发提供了一个请求成功的示例python代码,这是截取文件传输部分:,代码解释为:
某个文件,每次读取,并发送服务区400字节,转换为2进制进行传输。直至整个文件全部传输完成。

Jmter实际操作:
1、首先配置websocket连接

2、连接成功,开启正式传输标志。注意选择,使用已经存在的webSocket链接,这里是文本模式

3、请求成功,传输文件,Binary形式,首先直接选择整个文件进行传输。发现出现异常。因为服务端做的限制,避免压力过大,每次需要接收要求大小的字节流,而不是整个文件。从示例代码中也可以看出。本请求需要不允许。

4、不能传输整个文件,那么把文件进行转换,按照示例代码说明,每次取400字节,并且转换成我们需要的格式,放置在 Request data框里进行传输。注意:Request data 框内,Bianry请求 需要放置 16进制数据。这也是好多人在webSocket请求中传输流导致服务端收不到的异常原因,大部分都是文件格式错误,或者进制转换错误。以下为转为16进制代码.并每400字节的内容为1行,写入到txt文件中

step = 400
                with open(self.file, 'rb') as f:

                    while True:
                        read_data = f.read(step)
                        hex_string = binascii.hexlify(read_data).decode('utf-8')
                        print(hex_string)
                        # 打开文件用于追加
                        with open('E:\mytxt\demo.txt', 'a') as file:
                                # 在每个元素后面添加换行符
                                file.write(hex_string + '\n')
                        #print(read_data)
                        #print("------------------------------------------------------------------------------------------")
                        if read_data:
                            #print("发送了1次流文件")
                            ws.send(read_data, ABNF.OPCODE_BINARY)

                        if len(read_data) < step:
                            break
                        time.sleep(0.02)

5、通过循环发送binary16进制文件请求,每次读取1行txt文件内容,直至文件传输完毕


6、读取服务端发送的消息

7、消息正常,关闭WebSocket请求

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值