Spring Boot 帧必须以Jmeter中的空八位字节错误终止

1tuwyuhd  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(48)

我必须在Jmeter上负载测试一个WebSocket。WebSocket已经使用Springboot实现。我在测试时在Jmeter上发送Stomp数据时遇到了一个问题。我正在根据stomp框架适当地对文本进行框架。这是一个新的框架:

log.info("Connect PreProcessor");

String con = "CONNECT\n" +       
       "login:${wsToken}\n" +
                   "passcode:admin\n" +
                   "accept-version:1.1,1.0\n" +
                   "heart-beat:0,0\n" +  
                   "\n"+'\0' ;

vars.put("wsStompCon", con);

字符串
我正在发出发送请求,当我订阅连接时,AMQ建立连接,我得到CONNECTED响应。所以连接没有问题。当我发送数据时会发生问题:

String User = "SEND\n" +
                    "content-length:39\n" +
                    "destination:/app/chat.newUser\n\n" +
                    "{\"sender\": \"Usr111222\",\"type\":\"JOIN\"}" +
                    '\0' ;

vars.put("wsAddUser", User);


我把var 'wsAddUser'放在发送采样器中,并发送数据。
我在响应采样器中得到这个错误:

  • 错误消息:帧必须以空八位字节内容长度终止:0*

我使用的WebSocket插件由Peter Doornbosch提到:
https://bitbucket.org/pjtr/jmeter-websocket-samplers/src/master/
我已经在Jmeter.Properties文件中将编码更改为UTF-8。我认为问题是由于编码引起的,但我不确定。我应该如何更改此问题?

ztyzrc3y

ztyzrc3y1#

1.看起来你对内容长度头的计算不是很正确,因为{"sender": "Usr111222","type":"JOIN"}是37个八位字节,而\0是另一个八位字节,所以它应该是38。
1.不建议将JMeter Functions or Variables内联到Groovy脚本中,因此需要替换这一行:

"login:${wsToken}\n" +

字符串
这一个:

"login:" + vars.get("wsToken") + "\n" +


(as只要它不是GStringTemplate)
其中vars代表JMeterVariables类示例,有关详细信息,请参阅JavaDoc,有关可用于JSR 223测试元素的其他JMeter API快捷方式的说明,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy

相关问题