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

如何在Artillery中使用SocketIO引擎仅接收事件不发送事件?

Artillery SocketIO 被动监听服务器推送事件的实现方法

Artillery的SocketIO引擎支持被动监听服务器推送的事件,无需主动发送任何事件,你之前的配置因结构错误导致失效,以下是正确的实现方式:

完整配置示例

config:
  target: "http://你的SocketIO服务器地址"
  phases:
    - duration: 60  # 测试持续时间(秒)
      arrivalRate: 1 # 每秒创建的虚拟用户数
  engine: "socketio"
  # 可选:指定SocketIO传输方式,默认会尝试多种,可固定为websocket
  socketio:
    transports: ["websocket"]

scenarios:
  - name: "仅监听服务器推送事件"
    flow:
      # 第一步:建立SocketIO连接
      - connect: {}
      # 监听服务器推送的指定事件
      - on:
          event: "data" # 替换为你要监听的事件名
          # 可选:捕获事件中的数据到变量,用于后续验证或日志
          capture:
            - json: "$.from"
              as: "sender"
            - json: "$.origin"
              as: "message_origin"
          # 可选:断言验证事件数据是否符合预期
          assert:
            - equals:
                - "{{ sender }}"
                - "ai"
            - equals:
                - "{{ message_origin }}"
                - "{{ messageId }}" # 若使用变量需提前在config中定义或通过其他方式注入
      # 保持连接,持续监听事件(单位:秒)
      - think: 300

关键说明

  • 必须遵循Artillery的标准配置结构:所有逻辑需放在scenarios.flow下,顶层不能直接写监听指令
  • 使用on指令是SocketIO引擎中监听入站事件的官方正确方式,而非你尝试的waitFor
  • connect指令负责建立SocketIO连接,这是监听事件的前提
  • think指令用于让虚拟用户保持连接状态,避免连接建立后立即断开,确保能持续接收服务器推送的事件
  • 若不需要捕获或验证数据,可去掉capture和assert部分,仅保留event字段即可

内容的提问来源于stack exchange,提问作者장현수

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:27:08