首页 > 解决方案 > 当我用 JMeter 录制 SignalR 时,它没有连接

问题描述

嗨,我正在对应用程序进行性能测试,但我无法复制 signalR 连接我所做的是调用 negociate api

/signalr/negociate 使用连接令牌获得预期的响应

"Url":"/MyApp/signalr","ConnectionToken":"gM8NUnZtDg6oYU3Y9sfZgnIDlInyvspePwDuRdmqZlslRgkPIp8w/c0FZzllhwiUdZlOmPkyBd2DGU76ldt3v1B25lQlTeg1jETBWRkqaXD0QGpeNJLl3KqvnJ3v4YQ2","ConnectionId":"e1adc41d-ad0d-439f-858c-1fa47bb59083","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":true,"ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}

然后我用 JMeter 提取该令牌(并将其用于连接调用)

GET https://myHost/myApp/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=gM8NUnZtDg6oYU3Y9sfZgnIDlInyvspePwDuRdmqZlslRgkPIp8w%2Fc0FZzllhwiUdZlOmPkyBd2DGU76ldt3v1B25lQlTeg1jETBWRkqaXD0QGpeNJLl3KqvnJ3v4YQ2&connectionData=%5B%7B%22name%22%3A%22workhub%22%7D%5D&tid=2

但响应始终是 400 Bad Request

不是有效的 Web 套接字请求。

知道为什么那个电话会失败吗?

非常感谢

标签: jmetersignalrperformance-testing

解决方案


我不认为您可以使用 JMeter 的HTTP(S) 测试脚本记录器记录 WebSocket 请求,因为上述 HTTP(S) 测试脚本记录器只能从JMeter 5.2生成HTTP 请求采样器

我建议使用以下方法之一来捕获传出的 WebSocket 请求:

完成后,您可以安装JMeter WebSocket Samplers插件并使用适当的 Samplers 来模拟 WebSocket 请求,您将需要手动设置有效负载。


推荐阅读