You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artillery WS中如何检查WebSocket服务器响应并实现数据回传

Artillery WebSocket响应捕获与回传解决方案

你当前的capture配置是针对HTTP请求的语法,WebSocket的异步消息需要通过websocket场景下的onMessage事件来处理,这是导致fooBody显示undefined的核心原因。

下面是实现捕获响应字段、打印日志、回传数据的完整配置示例:

config:
  target: "ws://your-websocket-server-url"
  phases:
    - duration: 10
      arrivalRate: 1
scenarios:
  - name: "WebSocket消息交互"
    engine: "websocket"
    flow:
      - connect:
          onOpen:
            - send: '{"type": "init"}' # 初始化发送的消息,根据业务需求调整
      - onMessage:
          match:
            json: "$.fooBody" # 过滤出包含fooBody字段的目标消息
          capture:
            json: "$.fooBody"
            as: "fooBody"
          then:
            - log: "收到服务器数据: {{ fooBody }}"
            - send: '{"echo": "{{ fooBody }}"}' # 将捕获的fooBody回传给服务器

关键说明:

  • onMessage事件:WebSocket消息是异步推送的,必须通过这个钩子监听并处理服务器返回的消息,不能直接用HTTP场景的capture语法。
  • match规则:可选但建议添加,用来过滤你需要处理的特定消息,避免无关消息干扰捕获逻辑。
  • 变量复用:在onMessage的capture中提取的变量,可直接在后续的send或log步骤中调用。
  • 格式校验:确保服务器返回的是标准JSON格式;如果是纯文本消息,需去掉json捕获规则,改用regex或直接捕获整个$message变量。

额外排查点:

  1. 临时添加log: "原始消息内容: {{ $message }}",打印完整的服务器返回数据,确认fooBody字段是否存在、JSON路径是否正确。
  2. 如果服务器返回二进制消息,需在onMessage中添加binary: true配置项。

内容的提问来源于stack exchange,提问作者thilak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:35:45