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

Karate框架WebSocket调用返回null值,请求协助排查问题

Karate WebSocket测试listen超时问题解决

问题分析

核心原因是socketsbay的demo WebSocket服务采用广播机制:发送的消息会推送给除发送者之外的其他在线客户端,不会回发给发起请求的当前连接。因此你的测试代码中,同一个socket发送消息后,listen无法收到自身发送的内容,最终超时导致listenResult为null,匹配失败。

解决方案

通过创建两个独立的WebSocket连接,分别模拟“发送端”和“接收端”,让接收端监听发送端的广播消息。

修正后的测试代码

Scenario: WebSocket广播消息测试
  # 启动接收端连接并异步监听
  * def receiver = karate.webSocket("wss://socketsbay.com/wss/v2/1/demo/")
  * karate.exec(function(){ receiver.listen(5000) })
  
  # 发送端连接并发送消息
  * def sender = karate.webSocket("wss://socketsbay.com/wss/v2/1/demo/")
  * sender.send('Test Karate')
  
  # 验证接收端的监听结果
  * match receiver.listenResult == 'Test Karate'

补充说明

  • karate.exec()用于异步执行监听逻辑,避免主线程被阻塞
  • 若出现连接时序问题,可在创建连接后添加短暂等待(如* karate.sleep(1000))确保连接稳定
  • 如需测试消息回显(echo)场景,需选择支持echo功能的WebSocket端点,而非广播类型服务

内容的提问来源于stack exchange,提问作者Dinesh Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:25:23