JMeter带Bearer Token的WebSocket连接最佳采样器选型及问题排查
带Bearer Token的JMeter WebSocket测试解决方案
核心问题定位
你用WebSocket Request-Response Sampler得到200但无服务器响应,大概率是采样器类型选错了——这个采样器是同步请求-响应模式,只适合主动发消息后等待服务器回复的场景;而你的实时应用是服务器主动推送事件,得用「连接建立+消息监听」的组合采样器。
具体解决步骤
1. 切换采样器组合
放弃单独使用WebSocket Request-Response Sampler,改用以下三个采样器配合:
- WebSocket Open Connection:专门负责建立带Bearer Token的WebSocket连接
- WebSocket Listener:持续监听服务器主动推送的所有消息
- WebSocket Single Write Sampler:如果需要主动给服务器发消息(比如心跳、指令),用这个采样器
2. 配置带Bearer Token的连接
在WebSocket Open Connection采样器里:
- 填写正确的WebSocket端点URL(比如
wss://your-app-domain/real-time-endpoint,和浏览器开发者工具里的一致) - 在「Headers」区域添加授权头:
Authorization: Bearer <你的令牌字符串> - 设置「Connection Reference Name」(比如
ws-connection-1),后续Listener和Write Sampler要引用这个名称
3. 排查Request-Response Sampler的无效原因
如果一定要用这个采样器,得确认两点:
- 你是否在「Request Data」里填写了和浏览器完全一致的触发消息(比如JSON格式的请求体,字段、引号都不能错)
- 对比浏览器WebSocket握手的Headers,确保JMeter里的请求头(尤其是Authorization、Origin等)和浏览器完全匹配
4. 验证消息监听
添加WebSocket Listener后:
- 把「Connection Reference Name」设为和Open Connection采样器一致的名称
- 运行脚本后,查看结果树里的Listener采样器,就能看到服务器主动推送的所有消息
5. 其他关键检查
- 确保JMeter的WebSocket插件是最新版本,旧版本可能存在协议兼容性问题
- 检查SSL证书:如果是wss协议,需要在JMeter的「SSL管理器」里导入服务器证书,避免连接被拦截
- 处理心跳:如果服务器有心跳机制,定期用WebSocket Single Write Sampler发送心跳消息,防止连接被断开
内容的提问来源于stack exchange,提问作者akshay solanki
相关产品推荐
相关产品推荐

