如何在不暂停 jmeter websocket 的情况下回答传入的 ping?

How to answer incoming ping without pausing in jmeter websocket?

我正在使用“Peter Doornbosch 的 WebSocket 采样器”插件

系统每30秒向客户端发送一次心跳消息。 客户端必须响应不断开与系统的连接。

我想在不暂停当前测试过程的情况下完成心跳部分。

我尝试了什么:

  1. 在 While 定时器中创建一个单读采样器。它将暂停测试过程。
  2. 创建两个线程组。 Websocket 对象(连接 ID)不能在两个线程组之间共享。
  3. 试过插件 -- Parallel Controller & Sampler,不幸的是它也不能共享 websocket 对象。

编辑: 对于 2,我希望 websocket 对象可以在线程之间共享。 1 个线程用于心跳作业,1 个线程用于测试。即使我在第二个线程中输入相同的连接 ID,jmeter 仍然将其视为不同的对象。

The Websocket object (connection ID) cannot be shared between two thread groups.

实际上是有可能的,根据 JMeter Documentation:

Properties are not the same as variables. Variables are local to a thread; properties are common to all threads

所以有 2 个选项可以在不同线程之间共享数据(即使它们在不同的线程组中)

  1. 使用__setProperty() function to convert JMeter Variable into a JMeter Property in first Thread Group and __P() function读取第二个线程组中的值
  2. 如果您的用例更复杂并且您希望即等到连接 ID 可用,您可以考虑使用 Inter-Thread Communication Plugin

您不能在线程之间共享 websocket 连接。这是设计使然。您的用例的解决方案是使用一个超时为 30 秒的读取采样器,然后是一个响应心跳的采样器。您可以将“可选读取”选项与读取采样器一起使用,以避免在这 30 秒期间未读取任何消息时产生错误。