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

如何将JMeter采样器注册为SignalR服务器客户端以监听消息

使用JMeter测试SignalR服务器监听功能(基于WebSocket插件)

核心目标

模拟JS客户端行为,完成:

  • 连接SignalR的ActivityHub
  • 注册监听ReceiveMessage事件
  • (可选)调用NewMessage方法触发服务器推送
  • 接收并验证服务器推送的消息

步骤1:配置WebSocket连接

  • 添加WebSocket Open Connection采样器:
    • 填写SignalR Hub的WebSocket地址(示例:ws://your-server-domain/activityhub)
    • 设置固定连接ID(如signalr-connection),后续所有采样器复用该ID
    • 按需添加请求头:如Origin(匹配服务器CORS配置)、Sec-WebSocket-Version: 13等(插件通常自动生成基础头)

步骤2:发送SignalR握手消息

  • 添加WebSocket Single Write采样器,复用上述连接ID,发送握手JSON:
    {"protocol":"json","version":1}
    
    这是SignalR识别WebSocket客户端的必要初始化步骤

步骤3:注册监听ReceiveMessage事件

  • 添加WebSocket Single Write采样器,复用连接ID,发送注册事件的消息:
    {"type":1,"target":"ReceiveMessage","arguments":[]}
    
    • type:1:表示注册事件的指令
    • target:指定要监听的服务器推送事件名ReceiveMessage
    • arguments:监听事件无需传参,留空数组

步骤4:(可选)触发服务器推送

若需主动调用NewMessage方法触发推送,添加WebSocket Single Write采样器:

{"type":1,"target":"NewMessage","arguments":["test-username","hello from JMeter"]}
  • target:指定要调用的Hub方法名NewMessage
  • arguments:按顺序传入方法参数(用户名、消息内容)

步骤5:接收并验证推送消息

  • 添加WebSocket Single Read采样器,复用连接ID,设置合理超时时间(如5000ms)
  • 服务器推送的ReceiveMessage消息格式示例:
    {"type":2,"target":"ReceiveMessage","arguments":["test-username","hello from JMeter"]}
    
  • 添加响应断言,验证arguments中的用户名、消息内容是否符合预期

步骤6:(可选)关闭连接

测试结束前,添加WebSocket Close Connection采样器,复用连接ID关闭WebSocket连接


关键注意事项

  • 所有相关采样器必须使用同一个连接ID,否则会创建多个独立连接,无法正常接收推送
  • 若服务器是ASP.NET Core SignalR,部分场景需先发送HTTP协商请求(GET到/activityhub/negotiate),获取connectionToken后,在WebSocket地址后拼接?id=xxx参数
  • 可通过查看结果树采样器,逐步骤验证握手、注册、调用、接收的消息是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:47:18