【问题标题】:Cannot read text from .net core signalr server using Single Read Sampler in Jmeter无法使用 Jmeter 中的 Single Read Sampler 从 .net core signalr 服务器读取文本
【发布时间】:2019-01-10 05:56:04
【问题描述】:

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

在 Jmeter 中完成的事情:-

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

任何对 jmeter 和 singnalr 使用 webSocket 作为传输有经验的人都可以解释一下吗? 欢迎任何线索。 在此先感谢

【问题讨论】:

  • 是的,我们一直在按照上述教程进行操作,并且我更新了解释我们已完成步骤的问题。谢谢
  • 对于写入步骤,我必须在最后发送一个方形字符,当我检查网站在做什么时,我可以在浏览器的开发者控制台中看到这一点。据我了解,它标志着您请求的“结束”。如果没有这个方形字符,它对我不起作用。
  • 非常感谢您!!我们在写入中缺少该符号。现在可以在 jmeter 中看到读取。您可以将其作为答案,我会将其标记为解决方案。其他人可能会发现它非常有用。
  • @ChristopherMathew SignalR 协议在github.com/aspnet/AspNetCore/blob/master/src/SignalR/specs/… 处为其编写了一个规范,您缺少的部分是位于 json 编码部分github.com/aspnet/AspNetCore/blob/master/src/SignalR/specs/… 中的记录分隔符@

标签: asp.net-core websocket jmeter signalr jmeter-plugins


【解决方案1】:

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

对于 write 步骤,我必须 在末尾发送一个方形字符,当我检查网站是什么时,我可以在浏览器的开发者控制台中看到这一点正在做。据我了解,它标志着您请求的“结束”。如果没有这个方形字符,它对我不起作用。

我不知道这个方形字符是什么 unicode 字符,但它似乎标志着信号器写入的结束。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多