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
- 更新:2026-01-13 16:19
- 阅读:33
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: window11
HBuilderX类型: 正式
HBuilderX版本号: 4.87
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS 6.0.0
手机厂商: 模拟器
手机机型: nova 15 pro
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
复制代码在鸿蒙模拟器运行
复制代码在鸿蒙模拟器运行
预期结果:
readyState 正确显示
readyState 正确显示
实际结果:
显示undefined
显示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)
该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。建议用户:
- 确保使用API 12+的鸿蒙环境
- 改用onOpen/onError事件监听状态
- 参考鸿蒙调试指南进行真机验证
此属概念性误区,非代码缺陷,无需修复。