关于JMeter WebSocket插件:JMeter WebSocket插件-关闭SignalR连接--webSocket Close报错
在浦发银行的项目中,主机运维连接成功不做任何操作的场景中,用到了webSocket协议,但是脚本运行中出现webSocke Close报错--解决方案:在webSocket Open Connection下一步添加WebSocket Single Read Sampler,原因如下:jmeter加webscoket的步骤,open connection只是建立链接,read才会读到结果,webscoket Close得知道结果状态,才能关闭
添加WebSocket Single Read Sampler还是有报错,websocket关闭连接还是报错
报错原因:服务器发送了文本消息,没有读取这些消息,消息被缓冲,导致关闭的时候会首先读取这些文本消息返回错误。
解决:通过过滤文本消息的方式,智能关闭连接,jmeter提供了这个方式
灵感来源自下面文章:https://www.codenong.com/53865947/
JMeter WebSocket plugin - Close SignalR connection
我有一个网站使用Asp.NET Core SignalR从服务器动态加载数据。
我在此页面上使用JMeter进行功能测试。我使用1.2.1版中的WebSocket采样器插件来测试SignalR功能。
遵循有关如何将JMeter与WebSocket采样器插件一起使用的blazemeter教程之后,在尝试关闭SignalR连接时,总会出现错误。
我的JMeter采样器设置如下所示:
- WebSocket打开连接
- WebSocket请求-响应采样器
- WebSocket单读采样器
- WebSocket关闭
为了关闭连接,我使用了名为WebSocket Close的WebSocket采样器。该采样器允许提供Close status。
我试图提供不同的Close status代码。但是实际上没有确认所提供的代码,并且总是返回错误消息:
Response code: WebSocket error: unsuccesful close.
Response message: WebSocket error: received not a close frame, but Text frame with text ...
如何在JMeter中正确关闭此连接?
更新资料
我发现这取决于我使用多少个采样器。如果我在读采样器之前使用写采样器,则关闭似乎有效。喜欢:
- WebSocket打开连接
- WebSocket请求-响应采样器
- WebSocket单读采样器
- WebSocket单写采样器
- WebSocket关闭
但是,如果我想拥有一个以上的读取采样器,它将无法正常工作。知道如何正确使用多重读取采样器吗?
更新2
我重新阅读了插件文档,并在此处检查了示例JMeter文件。
不幸的是,到目前为止,我还没有找到具有多个Read Samplers的更大样本。
- 嗨,主席先生,能否让我知道您使用的是哪个Signalr版本以及.net的版本?我试图从我的asp.net核心Signalr服务器读取jmeter中的消息,但是即使在浏览器客户端中正确接收到消息,也无法收到任何消息,所以找不到我在做什么。我能够启动websocket连接,并使用写采样器通过套接字将消息写入服务器,但是只能检测到来自信号器服务器的ping消息(使用单个读取采样器),并且未检测到任何文本框架。你能帮我一下吗
- 我使用浏览器的开发人员工具来了解网站发送和接收的内容。这样,我就可以构建想要的JMeter测试。
- 您是否使用Single Read Sampler从服务器到jmeter客户端收到任何文本框架?我检查了使用提琴手到jmeter客户端和浏览器客户端的网络流量,发现服务器发送的文本帧没有到达jmeter客户端,但到达了浏览器客户端。我正在URL中发送信号发送程序connectionId以便随后写入服务器。除了connectionId之外,我是否还缺少其他东西?如果可以的话,您能否共享jmx文件(websocket采样器部分),否则您将采取什么步骤来建立信号器连接并从中读取?
- 请创建您自己的Stackoverflow问题。我认为我们不应该滥用评论来解决您的问题。一旦您提出了问题,请告诉我,我会尽力为您提供帮助。
- stackoverflow.com/questions/54122668/这是您所建议的问题
可能发生的情况是您的服务器发送了一些文本消息,而您的JMeter测试脚本尚未读取该消息。 这些消息被缓冲,当您关闭WebSocket连接时,"关闭采样器"首先读取这些文本消息之一并返回错误。
有一个更改请求,用于增强" Close Sampler"(关闭采样器),并带有忽略此类缓冲区结束消息的选项。 目前,您可以通过将文本框过滤器与封闭式采样器结合使用来实现相同的目的。 请参阅示例目录中的"使用filter sample.jmx智能关闭"示例。