使用SocketTask,关闭页面并断开连接时,IOS会延迟5秒才关闭(当时页面已关闭),安卓正常的。 如果在这5秒内再次进入页面的话,会出现2个连接。
![一只小帕吉](https://img-cdn-tc.dcloud.net.cn/account/identicon/d98c65426a01cb01ad175fd7742a5424.png)
- 发布:2021-05-27 11:17
- 更新:2021-05-28 12:57
- 阅读:546
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: WIN10
HBuilderX类型: 正式
HBuilderX版本号: 3.1.13
手机系统: iOS
手机系统版本号: IOS 14
手机厂商: 苹果
手机机型: IPhone 8 PLUS
页面类型: vue
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
日志:5秒左右的延迟
11:10:59.392 退出 at pages/test/test.vue:20
11:11:05.431 WebSocket Closed! at pages/test/test.vue:40 __ERROR
<template>
<view>
</view>
</template>
<script>
var socketTask;
export default {
data() {
return {
}
},
onLoad() {
this.connect();
},
onBackPress(event) {
console.log('退出')
socketTask.close();
},
methods: {
connect() {
socketTask = uni.connectSocket({
url: 'ws://XXXXXX',
complete: () => {}
});
socketTask.onOpen(function(res) {
console.log('WebSocket Connected!');
});
socketTask.onError(function(res) {
console.error('WebSocket Connection Failed!');
});
socketTask.onClose(function(res) {
console.error('WebSocket Closed!');
});
socketTask.onMessage(function(res) {
console.log('收到服务器内容:' + res.data);
});
},
}
}
</script>
<style>
</style>
日志:5秒左右的延迟
11:10:59.392 退出 at pages/test/test.vue:20
11:11:05.431 WebSocket Closed! at pages/test/test.vue:40 __ERROR
<template>
<view>
</view>
</template>
<script>
var socketTask;
export default {
data() {
return {
}
},
onLoad() {
this.connect();
},
onBackPress(event) {
console.log('退出')
socketTask.close();
},
methods: {
connect() {
socketTask = uni.connectSocket({
url: 'ws://XXXXXX',
complete: () => {}
});
socketTask.onOpen(function(res) {
console.log('WebSocket Connected!');
});
socketTask.onError(function(res) {
console.error('WebSocket Connection Failed!');
});
socketTask.onClose(function(res) {
console.error('WebSocket Closed!');
});
socketTask.onMessage(function(res) {
console.log('收到服务器内容:' + res.data);
});
},
}
}
</script>
<style>
</style>
预期结果:
socketTask.close();后立即断开连接
socketTask.close();后立即断开连接
实际结果:
日志:5秒左右的延迟
11:10:59.392 退出 at pages/test/test.vue:20
11:11:05.431 WebSocket Closed! at pages/test/test.vue:40 __ERROR
日志:5秒左右的延迟
11:10:59.392 退出 at pages/test/test.vue:20
11:11:05.431 WebSocket Closed! at pages/test/test.vue:40 __ERROR
一只小帕吉 (作者)
目前我用第三方客户端工具,测试时也能立即断开。 就IOS是这样,请问需要做什么特殊处理吗?这个问题搞的很头疼
2021-05-28 15:29
9***@qq.com
回复 一只小帕吉: 我这个就是用IOS设备测试的
2021-05-28 15:33
9***@qq.com
换一个websocket地址试试?
2021-05-28 15:34
一只小帕吉 (作者)
回复 9***@qq.com: 换了个服务端正常了。。。。但是安卓就很正常,有点莫名其妙,我再查下看看,谢谢!
2021-05-28 15:41