const socketTask = uni.connectSocket({
url: 'wss://cms-dev.lanmaocard.com/test-api/websocket/111211',
complete: ()=> {}
});
socketTask.onClose(e => {
console.log(e);
})
setTimeout(() => {
socketTask.close({code: 4001, reason: "主动关闭"})
}, 3000)

- 发布:2025-07-29 10:33
- 更新:2025-08-01 13:14
- 阅读:166
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
HBuilderX类型: 正式
HBuilderX版本号: 4.75
手机系统: Android
手机系统版本号: Android 15
手机厂商: vivo
手机机型: iqoo11s
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
const socketTask = uni.connectSocket({
url: 'wss://cms-dev.lanmaocard.com/test-api/websocket/111211',
complete: ()=> {}
});
socketTask.onClose(e => {
console.log(e);
})
setTimeout(() => {
socketTask.close({code: 4001, reason: "主动关闭"})
}, 3000)
const socketTask = uni.connectSocket({
url: 'wss://cms-dev.lanmaocard.com/test-api/websocket/111211',
complete: ()=> {}
});
socketTask.onClose(e => {
console.log(e);
})
setTimeout(() => {
socketTask.close({code: 4001, reason: "主动关闭"})
}, 3000)
预期结果:
onClose 正确失败到 关闭时传入的 code reason
onClose 正确失败到 关闭时传入的 code reason
实际结果:
onClose code固定为 1000 reason 为空
onClose code固定为 1000 reason 为空
bug描述:
scoketTask close 时传入 code , reason 参数无效, onClose 监听到的参数 固定为 code 1000
孤竹 (作者)
好吧, 小程序 h5 客户端 close 都是可以正常触发 onClose的,参数也正常能收到
2025-08-01 14:11
DCloud_Android_THB
回复 孤竹: 不应该吧? 客户端的onclose也是接收服务端返回的信息,客户端主动关闭,没必要把reason回调给onClose
2025-08-01 15:52
孤竹 (作者)
回复 DCloud_Android_THB: onClose 时会处理重连,然后主动close时传入了 code, onClose收到是这个code 就不在重连了
2025-08-01 15:59
DCloud_Android_THB
回复 孤竹: 听起来你这个状态是客户端维护的,服务端给你发code是另外的逻辑。
2025-08-04 11:14