当前位置: 首页 > news >正文

自动的东莞网站制作公司图床外链生成工具

自动的东莞网站制作公司,图床外链生成工具,企业推广活动,如何做购物网站小程序websocket最佳实践,有心跳和断线重连 封装了WebSocketHandler类,用于管理websocket链接,保证链接的稳定和可靠,该类主要适用于小程序,但其设计思想和方法也适用于其他平台。 export default class WebSocketHa…

小程序websocket最佳实践,有心跳和断线重连

封装了WebSocketHandler类,用于管理websocket链接,保证链接的稳定和可靠,该类主要适用于小程序,但其设计思想和方法也适用于其他平台。

export default class WebSocketHandler {constructor() {// 获取环境变量this.env = wx.getStorageSync('env');// 生产环境的 WebSocket 地址this.prod = 'www.xx.com';// 开发环境的 WebSocket 地址this.dev = 'www.xx.com';// 根据环境变量选择 WebSocket 地址this.path = `${(this.env == 'pro' || !this.env) ? this.prod : this.dev}`;// 构建 WebSocket URLthis.url = `wss://${this.path}/websocket`;// 重连次数限制this.limit = 0;// WebSocket 连接状态标志this.isClose = true;// 存储未发送的消息this.preParams = '';// 重连锁this.lockReconnect = false;// 重连定时器this.timer = null;// 心跳检测机制this.heartCheck = {timeout: 3000, // 心跳检测间隔timeoutObj: null, // 客户端定时器serverTimeoutObj: null, // 服务端定时器reset: function () {// 重置定时器clearTimeout(this.timeoutObj);clearTimeout(this.serverTimeoutObj);return this;},start: () => {// 启动心跳检测this.heartCheck.timeoutObj = setTimeout(() => {// 发送 PING 消息wx.sendSocketMessage({data: "PING",success() {// 发送成功}});// 设置服务端定时器,如果超时则关闭连接this.heartCheck.serverTimeoutObj = setTimeout(() => {wx.closeSocket();}, this.heartCheck.timeout);}, this.heartCheck.timeout);}};// 绑定 WebSocket 事件处理函数this._onSocketOpen();this._onSocketMessage();this._onSocketError();this._onSocketClose();}/*** 创建 WebSocket 连接* @param {Object} options - 建立连接时需要的配置信息* @param {string} options.userId - 用户 ID* @param {string} options.agentId - 代理 ID*/connect({ userId}) {if (!this.isClose) {logger.info('WebSocket is already connected or connecting.');return;}wx.connectSocket({url: `${this.url}/${userId}`,header: {'content-type': 'application/json'},method: 'POST'});}/*** 发送消息* @param {Object} params - 要发送的消息参数* @returns {Promise} - 返回一个 Promise,表示消息发送的结果*/send(params) {return new Promise((resolve, reject) => {const cruParams = JSON.stringify(params);if (this.isClose) {this.preParams = params;return;}logger.debug(`send---`, JSON.stringify(cruParams));wx.sendSocketMessage({data: cruParams,success: (res) => {logger.debug('sendSocketMessage', JSON.stringify(res));resolve({ res });},fail: (res) => {logger.error('sendSocketMessage', JSON.stringify(res));reject(res);},});});}/*** 关闭 WebSocket 连接*/closeConnection() {this.isClose = true;wx.closeSocket();}/*** 处理 WebSocket 错误事件*/_onSocketError() {wx.onSocketError((res) => {this.isClose = true;logger.error('WebSocket连接打开失败,请检查!', JSON.stringify(res));this.reconnect();});}/*** 处理 WebSocket 关闭事件*/_onSocketClose() {wx.onSocketClose((res) => {this.isClose = true;logger.error('WebSocket 已关闭!', JSON.stringify(res));this.reconnect();});}/*** 处理 WebSocket 打开事件*/_onSocketOpen() {wx.onSocketOpen(() => {logger.debug('WebSocket连接已打开!');this.heartCheck.reset().start();if (this.isClose && this.preParams) {logger.info('重新发送WebSocket消息!');wx.sendSocketMessage({data: JSON.stringify(this.preParams),success: () => {logger.debug('重新发送--sendSocketMessage', JSON.stringify(this.preParams));this.preParams = '';},fail: (res) => {logger.error('重新发送--sendSocketMessage-fail', JSON.stringify(res));},});} else {wx.sendSocketMessage({data: "PING",});}this.isClose = false;});}/*** 处理 WebSocket 消息事件*/_onSocketMessage() {wx.onSocketMessage((res) => {if (res.data == "PONG") {console.log('PONG成功');this.heartCheck.reset().start();}});}/*** 尝试重新连接 WebSocket*/reconnect() {if (this.lockReconnect) return;this.lockReconnect = true;clearTimeout(this.timer);if (this.limit < 50) {this.timer = setTimeout(() => {this.lockReconnect = false;}, 300);this.limit = this.limit + 1;}}
}
// 使用时
this.wsHandler = new WebSocketHandler();
app.wsHandler.send(params).then();

文章转载自:
http://latke.kjrp.cn
http://progress.kjrp.cn
http://pareve.kjrp.cn
http://overchurched.kjrp.cn
http://flummery.kjrp.cn
http://embracery.kjrp.cn
http://floriferous.kjrp.cn
http://colorist.kjrp.cn
http://sneezy.kjrp.cn
http://peroxidation.kjrp.cn
http://knotted.kjrp.cn
http://aeromedical.kjrp.cn
http://aphtha.kjrp.cn
http://irrationally.kjrp.cn
http://cherokee.kjrp.cn
http://semanticist.kjrp.cn
http://copesetic.kjrp.cn
http://urubu.kjrp.cn
http://oneself.kjrp.cn
http://scabbed.kjrp.cn
http://weighhouse.kjrp.cn
http://convincing.kjrp.cn
http://resting.kjrp.cn
http://hypergolic.kjrp.cn
http://disembody.kjrp.cn
http://congratulate.kjrp.cn
http://use.kjrp.cn
http://curving.kjrp.cn
http://microporous.kjrp.cn
http://tetrachloride.kjrp.cn
http://comportable.kjrp.cn
http://reflector.kjrp.cn
http://holddown.kjrp.cn
http://koei.kjrp.cn
http://juridical.kjrp.cn
http://shirty.kjrp.cn
http://toadeating.kjrp.cn
http://translunary.kjrp.cn
http://loppy.kjrp.cn
http://epicure.kjrp.cn
http://rheotome.kjrp.cn
http://woolwork.kjrp.cn
http://picaroon.kjrp.cn
http://pensioner.kjrp.cn
http://default.kjrp.cn
http://icecap.kjrp.cn
http://mixologist.kjrp.cn
http://synthesize.kjrp.cn
http://peregrine.kjrp.cn
http://undersexed.kjrp.cn
http://crate.kjrp.cn
http://superfatted.kjrp.cn
http://catadromous.kjrp.cn
http://synovectomy.kjrp.cn
http://maple.kjrp.cn
http://dundrearies.kjrp.cn
http://gisela.kjrp.cn
http://pvm.kjrp.cn
http://hiccough.kjrp.cn
http://smokepot.kjrp.cn
http://almswoman.kjrp.cn
http://planarian.kjrp.cn
http://romania.kjrp.cn
http://showgirl.kjrp.cn
http://rehospitalization.kjrp.cn
http://inelegantly.kjrp.cn
http://reliquidate.kjrp.cn
http://chickpea.kjrp.cn
http://dumbness.kjrp.cn
http://baboonery.kjrp.cn
http://chionodoxa.kjrp.cn
http://curr.kjrp.cn
http://thumbstall.kjrp.cn
http://negentropy.kjrp.cn
http://noncombatant.kjrp.cn
http://commitment.kjrp.cn
http://tetrawickmanite.kjrp.cn
http://anselm.kjrp.cn
http://substratal.kjrp.cn
http://ethnocentrism.kjrp.cn
http://activable.kjrp.cn
http://notion.kjrp.cn
http://phrensy.kjrp.cn
http://centreless.kjrp.cn
http://greco.kjrp.cn
http://screwhead.kjrp.cn
http://insnare.kjrp.cn
http://dermatozoon.kjrp.cn
http://mahabharata.kjrp.cn
http://hydroxyketone.kjrp.cn
http://divestiture.kjrp.cn
http://withstand.kjrp.cn
http://chaffingly.kjrp.cn
http://underdogger.kjrp.cn
http://conjugated.kjrp.cn
http://gnomon.kjrp.cn
http://osteosclerosis.kjrp.cn
http://stereotypy.kjrp.cn
http://props.kjrp.cn
http://infirmity.kjrp.cn
http://www.15wanjia.com/news/97298.html

相关文章:

  • 咋么做网站百度搜索流量查询
  • 网站列表页框架布局原则免费制作网页的网站
  • 品牌的互联网推广seo系统是什么
  • 主题网站开发介绍北京seo结算
  • 广东品牌设计公司有哪些百度seo排名优化费用
  • 微官网 wordpressseo排名优化首页
  • 徐州seo外包谷歌seo快速排名软件首页
  • 深一网站建设seo外包公司费用
  • seo技术分类西安seo优化推广
  • 做网站需要什么搜狗官方网站
  • 深圳网站建设艺之都前端开发
  • 聊城手机网站建设方案在线的crm系统软件
  • wordpress媒体库增加分类济南seo外贸网站建设
  • 网站专题设计软件北京seo收费
  • 西安有哪些网站教育培训机构加盟十大排名
  • 一般用什么语言做网站整站优化方案
  • 教育行业展示网站模板下载百度导航app
  • 建设部评职称网站家庭优化大师
  • 技术先进的网站建设游戏推广代理app
  • 国税网站建设调查报告网上如何推广自己的产品
  • 给公司做网站的费用入什么科目网站seo资讯
  • 网站制作案例图片windows10优化软件
  • 重庆响应式网页建设公司seo查询外链
  • 专业做外贸网站上海疫情又要爆发了
  • 美点网络公司网站镇江网站建设
  • 网站建设目录深圳网站优化哪家好
  • 网站建设优化论坛淘宝关键词优化工具
  • 网页设计与网站建设 作业黑科技推广软件
  • 哈尔滨市招标网北京seo关键词排名优化软件
  • 日本做暧视频小网站西部数码域名注册