实战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请求

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 07:40:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 07:40:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 07:40:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 07:40:03       20 阅读

热门阅读

  1. 元类创建类的流程详解

    2024-04-08 07:40:03       15 阅读
  2. 【测试开发学习历程】python函数

    2024-04-08 07:40:03       15 阅读
  3. C语言学习分享

    2024-04-08 07:40:03       12 阅读
  4. 什么是物联网?

    2024-04-08 07:40:03       13 阅读
  5. 小程序View点击响应传递多个参数

    2024-04-08 07:40:03       12 阅读
  6. 微信小程序脚本的执行顺序

    2024-04-08 07:40:03       13 阅读
  7. KADB锁冲突查看及解决

    2024-04-08 07:40:03       12 阅读
  8. 金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例

    2024-04-08 07:40:03       14 阅读
  9. 【面经】软件开发工程师-后端方向1

    2024-04-08 07:40:03       12 阅读
  10. 2024-04-07(复盘前端)

    2024-04-08 07:40:03       12 阅读