5***@qq.com
5***@qq.com
  • 发布:2021-12-16 17:24
  • 更新:2021-12-16 17:45
  • 阅读:701

【报Bug】APP后台运行时,部分安卓手机的websocket无法正确触发onSocketClose

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.2.16

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 未知

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

uni.connectSocket({
url: '',
success: res => {
console.log(res);
}
});
uni.onSocketOpen(res => {
if (this.autoOff) {
this.working = true;
if(this.autoOff) getApp().globalData.navi.playTTS("虫连成功", true);
}
this.sendLoaction();
this.localTimer = setInterval(e => {
this.sendLoaction();
}, 10000);
this.workTimer = setInterval(e => {
this.updateTimer();
}, 1000);
});
uni.onSocketMessage(res => {
let obj = this.dealData(res.data);
console.log(obj, this.orderinfo);
if (obj.id && !this.myorder.id && this.ignoreArr.indexOf(obj.id) < 0) {
// TODO
}
if (obj.voice && (this.myorder.id || obj.force == 1)) {

            }  
        });  

//监听打开失败
uni.onSocketError(function(res) {
console.log('WebSocket连接打开失败,请检查!', res);
});
uni.onSocketClose(e => {
console.log('close Ws', e);
this.working = false;
clearInterval(this.workTimer);
clearInterval(this.localTimer);
this.getWork();
});

操作步骤:

一、建立连接后,用户将切换APP切换至后台
二、观看几分钟的视频后,自动断线。

预期结果:

正确触发onSocketClose的回调。

实际结果:

不触发onSocketClose的回调。导致重复调用时间计时

bug描述:

不触发onSocketClose

2021-12-16 17:24 负责人:DCloud_Android_ST 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

这种情况还能回到应用中吗 回到应用表现是什么样的

  • 5***@qq.com (作者)

    可以正常返回应用,没有重新打开APP的过程。

    2021-12-17 11:26

  • 5***@qq.com (作者)

    一开始我以为是定时器太多的问题,现在把定时器简化成一个。今天上午测试还是没有正确触发

    2021-12-17 11:29

  • DCloud_Android_ST

    回复 5***@qq.com: 请提供一下完整HXdemo示例我们这边测试下 还有如何得知已断开?

    2021-12-17 11:38

  • 5***@qq.com (作者)

    回复 DCloud_Android_ST: 我们先找了个第三方的插件试试,如果还不行,再反馈。谢谢了

    2021-12-17 12:04

该问题目前已经被锁定, 无法添加新回复