1742610880963.jpg (34.44 KB, 下载次数: 0)
下载附件 保存到相册
9 天前 上传
1742610935559.jpg (79.27 KB, 下载次数: 0)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
/** * 强制关闭本地WebSocket。 * 一旦调用本方法后,再次调用{[url=home.php?mod=space&uid=5196]@link[/url] #getLocalSocket()}将会返回一个全新的WebSocket对象引用。 * * 本方法通常在两个场景下被调用: * 1) 真正需要关闭WebSocket时(如所在的浏览器退出时); * 2) 当调用者检测到网络发生变动后希望重置以便获得健康的WebSocket引用对象时。 * * @param {boolean} silentClose true表示close前会清掉为此socket实例设置的各种回调,确保close时不会触发这些回调(比如:在 * 掉线重连场景下,close掉前一个旧的失效socket就不会错误地触发这些回调,而且还因为close是异步的,从而会引发一系列不可预测的行为)。 */ closeLocalSocket(silentClose) { let silentCloseTag = (silentClose?"silentClose="+silentClose:"silentClose=false"); if (wx.MBCore.debugEnabled()) wx.MBUtils.mblog_d(this.TAG, "正在closeLocalSocket()..."); let that = this; let thatSocket = this.localSocket; if (this.localSocket) { try { // close前会清掉为此socket实例设置的各种回调,确保close时不会触发这些回调(比如:在掉线重连场景下,close // 掉前一个旧的失效socket就不会错误地触发这些回调,而且还因为close是异步的,从而会引发一系列不可预测的行为) if(silentClose) { thatSocket.onError(null); thatSocket.onClose(null); thatSocket.onOpen(null); thatSocket.onMessage(null); if (wx.MBCore.debugEnabled()) wx.MBUtils.mblog_d(this.TAG, "closeLocalSocket("+silentCloseTag+")时,清理socket上的回调函数完成."); } // 真正开始关闭socket了 thatSocket.close({ success: () =>{ wx.MBUtils.mblog_d(that.TAG, "closeLocalSocket("+silentCloseTag+"):success."); }, fail: () =>{ wx.MBUtils.mblog_w(that.TAG, "closeLocalSocket("+silentCloseTag+"):fail!"); }, complete: ()=>{ wx.MBUtils.mblog_w(that.TAG, "closeLocalSocket("+silentCloseTag+"):complete。"); } }); // 确保本次清理的socket实例是本方法初始时的那个实例(排除因异步等原因this.localSocket被重新设置后又在此被错误地置空,那就坑爹了) if(Object.is(thatSocket, this.localSocket)){ this.localSocket = null; } } catch (e) { wx.MBUtils.mblog_w(this.TAG, "在closeLocalSocket("+silentCloseTag+")方法中试图释放localSocket资源时:", e); } } else { wx.MBUtils.mblog_d(this.TAG, "Socket处于未初化状态(可能是您还未登陆),无需关闭。"); } }
引用:JackJiang 发表于 2025-03-22 10:51 看到了,不小心复制粘贴时把uniapp的代码贴到了里面。 你把sdk里的这个方法,用我的这个版本覆盖一下再 ...
引用:921124136 发表于 2025-03-24 10:40 用了这个就没红色bug爆出了
本人属:兔
本人属:牛
本人属:龙
本人属:羊
本人属:鼠
本人属:虎
本人属:蛇
本人属:猴
本人属:马
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.332010 second(s), 40 queries , Gzip On.