jmeter - 当我用 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 套接字请求。
知道为什么那个电话会失败吗?
非常感谢
解决方案
我不认为您可以使用 JMeter 的HTTP(S) 测试脚本记录器记录 WebSocket 请求,因为上述 HTTP(S) 测试脚本记录器只能从JMeter 5.2生成HTTP 请求采样器
我建议使用以下方法之一来捕获传出的 WebSocket 请求:
完成后,您可以安装JMeter WebSocket Samplers插件并使用适当的 Samplers 来模拟 WebSocket 请求,您将需要手动设置有效负载。