无法使用Jmeter中的Single Read Sampler从.net Core Signalr服务器读取文本
问题内容:
我正在尝试对我们的网络应用进行负载测试,这是一个使用asp.net核心和信号器技术使用代码编写的实时游戏应用。我们正在使用Peter
Doornbosch的JMeter WebSocket
Samplers进行websocket通信,但是我们无法从Signalr服务器获取任何消息(除了来自websocket层的ping帧)。我尝试读取的文本消息是从服务器到所有连接的客户端的广播,因此我可以看到该消息已被浏览器客户端接收,但jmeter客户端未收到该消息。我已经嗅探到浏览器和jmeter客户端的流量,发现服务器消息根本不在jmeter客户端收到,而是在浏览器中。
在Jmeter中完成的事情:-
- 对Signalr的服务器端点的HTTP请求,并获得Signalr connectionId作为响应将其提取并保存在jmeter变量中。
- 使用Single Write Sampler通过步骤1中获得的connectionId来设置新的Websocket连接,并发送文本框来设置Signalr数据协议“ {“ protocol”:“ json”}“。(在浏览器的开发人员控制台中复制)
- 使用现有的连接,另一个Single Write Sampler发送一个调用Signalr集线器功能的文本以添加到Signalr组中。在集线器功能中,有一个广播写入所有连接的客户端。
- 使用Single Read Sampler从步骤3中提到的服务器读取广播。此步骤始终会导致jmeter中的响应超时错误。
任何对使用webSocket进行传输的jmeter和singnalr有过使用经验的人都可以了解一下?欢迎任何线索。提前致谢
问题答案:
按照提问者的要求,我在这里将我的评论作为答案:
对于 写入步骤, 我必须 在末尾发送一个方形字符, 当我检查网站的运行情况时,可以在浏览器的开发人员控制台中看到此 字符
。据我了解,这表明您的请求已“结束”。没有这个方形字符,对我不起作用。
我不能说这个方形字符是什么unicode字符,但是它似乎表明信号发送器写入已结束。
我检查了unicode, 可能 是这样的:□这是unicode 9633