JMeter & socket.io - 我可以看到我想要的消息,但套接字插件没有显示我所期望的

JMeter & socket.io - I can see the message I want, but the socket plugin is not showing what I expect

这是我在浏览器调试器控制台中看到的套接字消息:

也许更能说明问题:

我调用一个 API 操作来通过套接字触发此消息。

我试过的

为了避免不准确,我启动了 2 个 JMeter 实例。

  1. REST API 调用。
  2. GitHub JMeter example of sockets.io 的修订版,其中我只是在 wss://events.dev.myserver.com:443/socket.io/?EIO=4&transport=websocket 上重复调用 WebSocket 采样器。

我开始了(2).

虽然那是 运行宁,但我开始了 (1)。

预期

最终,(1) 应该会在“查看结果树”中显示一个采样器,并在屏幕截图中显示消息 ("42" - GAME_STARTED)

实际

我看到的唯一消息如下所示:

这就是我真正想要做的:运行 适当的采样器,在进行 API 调用后有足够的时间来获取消息。

更新

我们使用 python-socketio 成功找到消息:

sio.connect("https://events.dev.server.com", transports='websocket',
            headers={'Sec-WebSocket-Extensions: permessage-deflate', 'Sec-Fetch-Dest: websocket',
                     'Sec-Fetch-Mode: websocket',
                     'Cookie: ABCSESSIONDEV=NTI3MzkwNWUtMTJmNS00Y2U0LTk1NGUtMjQ2Mzk5OTYxZWE0'})

这是输出:

Received packet MESSAGE data 2["message","{\"locationId\":110,\"name\":\"GAME_STARTED\",\"payload\":{\"id\":146724,\"boxId\":2002,\"userId\":419,\"createdAt\":\"2022-03-02T14:35:31\",\"lastModifiedAt\":\"2022-03-02T14:35:36.752\",\"completedAt\":\"2022-03-02T14:35:36.621\",\"activationMethod\":\"TAG\",\"nfcTagId\":\"xxxxxx\",\"gameCount\":1,\"app\":false}}"]

我现在想在 JMeter 中使用 websocket 插件来执行此操作。

查看 HTTP 请求的其他字段,特别是 HTTP Headers,很可能您的 JMeter 请求缺少一些基本信息。

我的期望是,为了“开始游戏”(无论它是什么意思),您需要在浏览器中打开页面,以某种方式授权,按照 protocol upgrade mechanism 等步骤操作完全模仿真正的浏览器所做的,所有在开始游戏之前的请求序列。

您可能需要correlate dynamic parameters, add HTTP Header Manager, add HTTP Cookie Manager,等等