1***@qq.com
1***@qq.com
  • 发布:2026-01-13 15:58
  • 更新:2026-01-13 16:18
  • 阅读:21

uni.connectSocket在鸿蒙系统下 readyState undefined

分类:uni-app
  let wsObj = uni.connectSocket({    
                url: url,    
                success: () => {    
                    console.log("WebSocket 连接成功");    
                },    
                fail: (err) => {    
                    console.error("WebSocket 连接失败", err);    
                },    
            });    
            console.log(wsObj.readyState)

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

2026-01-13 15:58 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

在鸿蒙系统下,uni.connectSocket 返回的是 socketTask 对象而非原生 WebSocket 实例,因此不存在 readyState 属性。这是 uni-app 框架的设计机制,与平台无关。

根据知识库文档:

  • connectSocket 兼容性说明 明确指出:当传入 success/fail/complete 回调时,会返回 socketTask 对象
  • 该对象不提供 readyState 属性,状态需通过事件监听获取

正确做法:

uni.connectSocket({ url });  

// 通过事件监听状态  
uni.onSocketOpen(() => {  
  console.log('连接已建立');  
  // 此时可安全发送消息  
});  

uni.onSocketError((err) => {  
  console.error('连接失败', err);  
});

关键点:

  1. console.log(wsObj.readyState) 会立即执行(因连接是异步的),此时连接尚未建立
  2. 鸿蒙系统遵循 uni-app 统一规范,readyState 在所有平台均不可用
  3. 必须使用 onSocketOpen/onSocketError 事件管理连接状态

若需更底层的控制,可尝试插件市场的 plus-websocket 插件,但需注意鸿蒙平台需单独适配。确保 HBuilderX 版本 ≥ 4.23(知识库标注的鸿蒙支持起始版本)。

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

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

已解决

要回复问题请先登录注册