使用JMeter测试WebRTC服务器遇WSS连接400错误,求解决方案
JMeter测试Socket.io WebSocket返回400错误的解决步骤
移除手动添加的Connection和Upgrade请求头
JMeter的WebSocket插件会自动生成WebSocket握手所需的Connection=Upgrade和Upgrade=websocket头,手动添加这两个头会被插件忽略(日志已明确提示),直接删掉自定义的这两个头即可。补全Socket.io的前置连接流程
Socket.io并非标准WebSocket协议,它需要先通过HTTP轮询获取会话标识(sid),再建立WebSocket连接:- 添加HTTP请求采样器,访问
https://myserver:3004/socket.io/?userId=K&EIO=3&transport=polling,从响应中提取sid参数 - 将提取到的
sid拼接到WebSocket连接URL中,最终URL格式应为:wss://myserver:3004/socket.io/?userId=K&EIO=3&transport=websocket&sid=【你的sid值】
- 添加HTTP请求采样器,访问
更新WebSocket插件版本
确保使用最新版的JMeter WebSocket采样器插件(如Peter Doornbosch开发的版本),旧版本对Socket.io的兼容性较差,可能导致连接失败。调整Ping/Pong采样器的执行时机
日志中的Ping/Pong错误是因为连接未成功建立就触发了该采样器,需将Ping/Pong采样器放在WebSocketOpenConnection采样器之后,可添加逻辑控制器(如While Controller)确保连接成功后再执行Ping/Pong操作。对齐浏览器的请求配置
用Chrome开发者工具(F12)抓取浏览器建立Socket.io连接的完整请求,对比JMeter的请求参数、Cookie、请求头等,确保两者完全一致,比如是否需要传递特定Cookie,EIO版本(你使用的是3)是否与服务器要求匹配。
内容的提问来源于stack exchange,提问作者Satyadeep Kumar
相关产品推荐
相关产品推荐

