打开test页面,onSocketOpen输出1次,返回上一页,再次打开test页面onSocketOpen输出2次,依次会+1
- 发布:2022-07-25 10:04
- 更新:2024-09-30 12:32
- 阅读:1111
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 3.4.18
手机系统: Android
手机系统版本号: Android 12
手机厂商: 小米
手机机型: 至尊10
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
正常连接1次
正常连接1次
实际结果:
每次+1(是否影响应能。实际上是不是只链接了1次)
每次+1(是否影响应能。实际上是不是只链接了1次)
bug描述:
onSocketOpen打印多次。
onUnload中执行uni.closeSocket()后
第一次打开test页面onSocketOpen打印1次,然后返回上一页,
第二次打开test页面onSocketOpen打印2次
第三次三次,依次每次都会增加1次
(ws地址网络上随便找的一个,可能链接不上,本地启动的ws服务,依然存在这个问题)
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
在跳转到其他界面的时候,用onUnload的话,界面没卸载的话,不会走onUnload,也不会走uni.closeSocket()
onHide可以试试
https://uniapp.dcloud.net.cn/api/request/socket-task.html 只会测发一次,真机测试正常,打包安卓测试:如果进入页面打开,退出页面关闭,然后再进入页面 就会打开异常。
我的问题大根是这样解决的——
原因:
跳转到其它页面时,原页面有缓存,当第二次进入页面并建立Socket连接时,第一次访问页面时的监听器还在,所以会再次执行sendSocketMessage。
解决方法:
定义一个变量,初始值为true,onHide时设为false;在sendSocketMessage前判断一下,如果变量值为true时才sendSocketMessage。