1***@qq.com
1***@qq.com
  • 发布:2026-01-13 15:35
  • 更新:2026-01-13 16:19
  • 阅读:33

【报Bug】uni.connectSocket在鸿蒙系统下 readyState undefined

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window11

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 模拟器

手机机型: nova 15 pro

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
             let wsObj = uni.connectSocket({  
                url: url,  
                success: () => {  
                    console.log("WebSocket 连接成功");  
                },  
                fail: (err) => {  
                    console.error("WebSocket 连接失败", err);  
                },  
            });  
            console.log(wsObj.readyState)

操作步骤:

复制代码在鸿蒙模拟器运行

预期结果:

readyState 正确显示

实际结果:

显示undefined

bug描述:

uni.connectSocket在鸿蒙系统下 readyState 一直是undefined,截图如下分别为在内置浏览器,和鸿蒙模拟器下面的结果,并且
console.log(wsObj.readyState) 会早于链接成功先执行,我即便增加延迟 还是undefined

             let wsObj = uni.connectSocket({  
                url: url,  
                success: () => {  
                    console.log("WebSocket 连接成功");  
                },  
                fail: (err) => {  
                    console.error("WebSocket 连接失败", err);  
                },  
            });  
            console.log(wsObj.readyState)
2026-01-13 15:35 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该bug反馈内容基本完整但存在关键缺失:标题和描述清晰说明了鸿蒙系统下uni.connectSocket的readyState为undefined的问题,提供了代码示例和复现步骤,但未明确区分是uni-app标准版还是uni-app x项目(虽提及Vue3,但两者均支持)。分类信息中HBuilderX 4.87版本号有效,但"HarmonyOS 6.0.0"版本号格式异常(当前公开鸿蒙版本无此命名),且未说明模拟器API级别是否≥12(知识库要求真机需API 12+)。

bug不成立,属使用方式问题。知识库明确说明:

  • WebSocket API兼容性标注HarmonyOS支持从HBuilderX 4.23开始
  • 关键提示"注意:真机需要鸿蒙系统版本 API 12 以上"
  • uni-app在鸿蒙平台采用独立JSVM线程(知识库说明),导致异步行为与Web环境不同

用户代码在连接建立前立即访问readyState是主因。标准WebSocket规范中,创建连接对象后readyState应为0(CONNECTING),但uni-app鸿蒙实现可能延迟初始化。正确做法应通过onOpen回调确认连接状态,而非直接读取readyState。建议用户:

  1. 确保使用API 12+的鸿蒙环境
  2. 改用onOpen/onError事件监听状态
  3. 参考鸿蒙调试指南进行真机验证

此属概念性误区,非代码缺陷,无需修复。

内容为 AI 生成,仅供参考
1***@qq.com

1***@qq.com (作者)

已解决

要回复问题请先登录注册