android中websocket的状态,【报Bug】websocket在安卓状态下不能关闭

该博客主要讨论了在使用DCloud产品时遇到的一个特定环境下的问题,即在安卓设备上无法正常关闭WebSocket连接。当用户尝试在页面隐藏(onHide)或返回(onUnload)时关闭WebSocket,虽然代码执行了关闭操作,但在实际中并未关闭,导致重新打开页面时出现重连。开发者已经尝试了多种关闭方法,包括uni.onSocketClose和uni.closeSocket等,但均未成功。此问题在网页和苹果设备上则能正常关闭WebSocket。博客内容提供了详细的代码片段和重现步骤,寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]【安卓出现问题,网页和苹果均可以关闭websocket】在页面加载的时候链接websocket,按手机主键隐藏页面(onHide)或返回(onUpload)时想关闭websocket

[结果]关闭不了websockt,重新打开页面会出现重联

[期望]关闭websoket

var socketTask;

var socketOpen = false;

export default{

data(){

return{

}

},

onHide() {

console.log('onHide')

console.log(socketOpen)

console.log(socketTask.readyState)

//

// uni.onSocketClose(function (res) {//均不能关闭

// console.log('WebSocket 已关闭!');

// });

socketTask.close()//这种关闭在网页中和苹果中关闭成功

socketTask.onClose(function(res){//均不能关闭

console.log(res)

})

uni.onSocketOpen(function () {//均不能关闭

uni.closeSocket();

});

console.log(socketTask.readyState)

},

onShow(){

console.log('onshow')

this.connect()

},

onUnload(){

socketTask.close()

},

methods:{

connect(){

socketTask =uni.connectSocket({

url:'', //仅为示例,并非真实接口地址。

complete: ()=> {}

});

// // //打开websocket

uni.onSocketOpen(function (res) {

socketOpen=true;

console.log('WebSocket连接已打开!');

});

uni.onSocketMessage(function (res) {

console.log(res);

});

uni.onSocketError(function (res) {

console.log('WebSocket连接打开失败,请检查!');

});

uni.onSocketClose(function (res) {

//socketOpen=false;

console.log('WebSocket 已关闭!');

});

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值