无法使用 Jmeter 中的 Single Read Sampler 从 .net core signalr 服务器读取文本

Cannot read text from .net core signalr server using Single Read Sampler in Jmeter

我正在尝试对我们的 Web 应用程序进行负载测试,这是一个使用 asp.net 核心和信号器技术的代码编写的实时游戏应用程序。 我们正在使用 Peter Doornbosch 的 JMeter WebSocket Samplers for websocket communication.But 我们无法从信号服务器获取任何消息(除了来自 websocket 层的 ping 帧)。 我试图阅读的文本消息是从服务器向所有连接的客户端广播的,因此我可以看到浏览器客户端已收到该消息,但 jmeter 客户端没有收到。 我嗅探了浏览器和 jmeter 客户端的流量,发现服务器消息根本没有在 jmeter 客户端收到,而是在浏览器中。 所以我想我在初始连接建立步骤中缺少一些参数或 header 所以服务器无法检测到 jmeter 客户端,即使当时 webSocket 连接是打开的并且 websocket 层 ping 正在到达 jmeter客户.

在 Jmeter 中完成的事情:-

  1. HTTP 请求到 signalr 的服务器端点并获取 signalr connectionId 作为响应提取它并保存在 jmeter 变量中。
  2. 使用 Single Write Sampler 使用步骤 1 中获得的 connectionId 设置新的 websocket 连接,并发送一个文本框来设置 Signalr 数据协议“{"protocol":"json"}”。(复制为在浏览器的开发者控制台中看到)
  3. 使用现有连接另一个单一写入采样器发送文本调用信号器集线器功能添加到信号器group.Here在集线器功能中有一个广播写入所有连接的客户端。
  4. 使用单个读取采样器从步骤 3.This 中提到的服务器读取广播总是导致 jmeter 中的响应超时错误。

任何人有使用 webSocket 作为传输的 jmeter 和 singnalr 的经验可以阐明一些问题吗? 欢迎任何线索。 提前致谢

根据提问者的要求,我的评论作为答案:

For the write step I had to send a square character at the end , I could see this in the developer console of the browser when I checked what the website is doing. To my understanding it signals the "end" of your request. Without this square character it didn't work for me.

我不知道这个方形字符是什么 unicode 字符,但它似乎表示信号写入结束。

我检查了 unicode,可能 是这个:□ 这是 unicode 9633