打开test页面,onSocketOpen输出1次,返回上一页,再次打开test页面onSocketOpen输出2次,依次会+1
![哈哈柚](http://img-cdn-tc.dcloud.net.cn/uploads/avatar/000/57/81/08_avatar_mid.jpg?v=1650937048)
- 发布:2022-07-25 10:04
- 更新:2024-08-30 14:34
- 阅读:970
产品分类: 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服务,依然存在这个问题)
![](http://img-cdn-tc.dcloud.net.cn/uploads/questions/20220725/61b119d44d41f0f0112ae12e560b7353.png)
![套马杆的套子](http://img-cdn-tc.dcloud.net.cn/uploads/avatar/001/54/59/61_avatar_mid.jpg?v=1696927615)
![](http://img-cdn-tc.dcloud.net.cn/static/common/sponsor-1.png)
![](http://img-cdn-tc.dcloud.net.cn/static/common/sponsor-count-1.png)
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
在跳转到其他界面的时候,用onUnload的话,界面没卸载的话,不会走onUnload,也不会走uni.closeSocket()
onHide可以试试
![6***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/4ccd3b347a3e16083ef5de4dc8b361cd.png)
https://uniapp.dcloud.net.cn/api/request/socket-task.html 只会测发一次,真机测试正常,打包安卓测试:如果进入页面打开,退出页面关闭,然后再进入页面 就会打开异常。
![l***@gmail.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/a5de11fc2a317a232f74b5840694e140.png)
我的问题大根是这样解决的——
原因:
跳转到其它页面时,原页面有缓存,当第二次进入页面并建立Socket连接时,第一次访问页面时的监听器还在,所以会再次执行sendSocketMessage。
解决方法:
定义一个变量,初始值为true,onHide时设为false;在sendSocketMessage前判断一下,如果变量值为true时才sendSocketMessage。