在A页面使用uni.navigateTo方法跳转到B页面,在B页面中onUnload()方法中调用了socket.close方法关闭在B页面onLoad时创建的socket对象,重复几次以后就提示socket连接到达上限,在B页面中没能正常关闭socket连接
- 发布:2024-04-23 15:15
- 更新:2024-04-23 15:15
- 阅读:23
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10
HBuilderX类型: 正式
HBuilderX版本号: 3.99
第三方开发者工具版本号: 1.06.2402021
基础库版本号: 3.41
项目创建方式: HBuilderX
操作步骤:
预期结果:
在B页面中定义的socket对象,应该在onUnload方法中使用socket.close时关闭对应的socket连接
在B页面中定义的socket对象,应该在onUnload方法中使用socket.close时关闭对应的socket连接
实际结果:
在B页面中定义的socket对象,在onUnload方法中使用socket.close时调用的是A页面中socket对象的close方法
在B页面中定义的socket对象,在onUnload方法中使用socket.close时调用的是A页面中socket对象的close方法
bug描述:
function createSocket() {
const url = xxx;
socket = uni.connectSocket({
url: url,
complete: () => {
}
});
uni.onSocketOpen(function(res) {
console.log('WebSocket connection opened111111');
startHeartBeat(socket);
});
uni.onSocketError(function(error) {
console.error('WebSocket error:', error);
});
uni.onSocketMessage(function(message) {
loadInfo();
});
uni.onSocketClose(function() {
console.log('WebSocket connection closed1111');
clearInterval(heartInterval);
});
}
在A,B两个页面中都通过上述方式创建了一个socket对象,A页面为TabBar类型的页面,可从A页面跳转到B页面,也可从B返回A,在B页面返回A页面时,在生命周期函数onUnload()方法中,调用socket.close()方法,执行的不是B页面中socket对象的close方法而是A页面socket对象的close()方法,导致在页面切换时会一直累加socket连接,无法正确关闭B页面中的socket对象
0 个回复