utils-uniapp 1.2.5 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,12 +34,12 @@ export declare class WebSocketClient {
34
34
  * @param event 事件名
35
35
  * @param fn 回调函数
36
36
  */
37
- off(event: 'open' | 'message' | 'close' | 'error', fn: Function): this;
37
+ off(event: 'open' | 'message' | 'close' | 'reconnect' | 'error', fn: Function): this;
38
38
 
39
39
  /**
40
40
  * 内部触发事件(外部一般不用)
41
41
  */
42
- emit(event: 'open' | 'message' | 'close' | 'error', ...args: any[]): void;
42
+ emit(event: 'open' | 'message' | 'close' | 'reconnect' | 'error', ...args: any[]): void;
43
43
 
44
44
  /**
45
45
  * 建立连接
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("../_rollupPluginBabelHelpers-63255c86.js");var r=function(){function o(n){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};a._classCallCheck(this,o),this.url=n,this.reconnectDelay=t.reconnectDelay||1e3,this.heartbeatInterval=t.heartbeatInterval||3e4,this.heartbeatTimeout=t.heartbeatTimeout||1e4,this.heartbeatMsg=t.heartbeatMsg||"ping",this.maxReconnect=(e=t.maxReconnect)!==null&&e!==void 0?e:-1,this.socketTask=null,this.isConnected=!1,this.heartbeatTimer=null,this.heartbeatTimeoutTimer=null,this.reconnectTimer=null,this.reconnectCount=0,this.events={open:[],message:[],close:[],error:[]}}return a._createClass(o,[{key:"on",value:function(e,t){return this.events[e]&&this.events[e].push(t),this}},{key:"off",value:function(e,t){if(!this.events[e])return this;var s=this.events[e].indexOf(t);return s>-1&&this.events[e].splice(s,1),this}},{key:"emit",value:function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];this.events[e]&&this.events[e].forEach(function(c){return c.apply(void 0,s)})}},{key:"connect",value:function(){var e=this;return this.socketTask&&(this.socketTask.close(),this.socketTask=null),this.socketTask=uni.connectSocket({url:this.url,complete:function(){}}),this.socketTask.onOpen(function(t){e.isConnected=!0,e.reconnectCount=0,console.log("Connection established"),e.emit("open",t),e.startHeartbeat()}),this.socketTask.onMessage(function(t){e.resetHeartbeatTimeout(),e.emit("message",t)}),this.socketTask.onClose(function(t){e.isConnected=!1,console.log("Connection closed",t),e.stopHeartbeat(),e.emit("close",t),e.reconnect()}),this.socketTask.onError(function(t){console.error("WebSocket error: ",t),e.emit("error",t),e.isConnected&&e.stopHeartbeat(),e.socketTask&&e.socketTask.close()}),this}},{key:"send",value:function(e){return this.isConnected&&this.socketTask?this.socketTask.send({data:e}):console.error("WebSocket is not connected"),this}},{key:"startHeartbeat",value:function(){var e=this;this.stopHeartbeat(),this.heartbeatTimer=setInterval(function(){e.isConnected&&(e.send(e.heartbeatMsg),e.startHeartbeatTimeout())},this.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.clearHeartbeatTimeout()}},{key:"startHeartbeatTimeout",value:function(){var e=this;this.clearHeartbeatTimeout(),this.heartbeatTimeoutTimer=setTimeout(function(){console.warn("Heartbeat timeout, close socket"),e.socketTask&&e.socketTask.close()},this.heartbeatTimeout)}},{key:"resetHeartbeatTimeout",value:function(){this.clearHeartbeatTimeout()}},{key:"clearHeartbeatTimeout",value:function(){this.heartbeatTimeoutTimer&&(clearTimeout(this.heartbeatTimeoutTimer),this.heartbeatTimeoutTimer=null)}},{key:"reconnect",value:function(){var e=this;if(!this.isConnected){if(this.maxReconnect!==-1&&this.reconnectCount>=this.maxReconnect){console.log("Reach max reconnect count, stop reconnect");return}this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectCount+=1,console.log("Reconnecting in ".concat(this.reconnectDelay/1e3," seconds... count:").concat(this.reconnectCount)),this.reconnectTimer=setTimeout(function(){e.connect()},this.reconnectDelay)}}},{key:"close",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e3,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectCount=0,this.socketTask&&this.socketTask.close({code:e,reason:t})}}])}();exports.WebSocketClient=r;exports.default=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("../_rollupPluginBabelHelpers-63255c86.js");var c=function(){function r(s){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};i._classCallCheck(this,r),this.url=s,this.reconnectDelay=t.reconnectDelay||1e3,this.heartbeatInterval=t.heartbeatInterval||3e4,this.heartbeatTimeout=t.heartbeatTimeout||1e4,this.heartbeatMsg=t.heartbeatMsg||"ping",this.maxReconnect=(e=t.maxReconnect)!==null&&e!==void 0?e:-1,this.socketTask=null,this.isConnected=!1,this.heartbeatTimer=null,this.heartbeatTimeoutTimer=null,this.reconnectTimer=null,this.reconnectCount=0,this.manualClose=!1,this.events={open:[],message:[],close:[],error:[],reconnect:[]}}return i._createClass(r,[{key:"on",value:function(e,t){return this.events[e]&&this.events[e].push(t),this}},{key:"off",value:function(e,t){if(!this.events[e])return this;var o=this.events[e].indexOf(t);return o>-1&&this.events[e].splice(o,1),this}},{key:"emit",value:function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),n=1;n<t;n++)o[n-1]=arguments[n];this.events[e]&&this.events[e].forEach(function(a){try{a.apply(void 0,o)}catch(u){console.error("[".concat(e,"] callback error:"),u)}})}},{key:"connect",value:function(){var e=this;if(this.socketTask){var t=this.socketTask;this.socketTask=null,t.close({code:1e3,reason:"reconnect"})}this.manualClose=!1,this.socketTask=uni.connectSocket({url:this.url,success:function(){},complete:function(){}});var o=this.socketTask;return o.onOpen(function(n){var a=e.reconnectCount>0;e.isConnected=!0,e.reconnectCount=0,console.log("Connection established"),e.emit("open",n),a&&(console.log("Reconnected successfully"),e.emit("reconnect",n)),e.startHeartbeat()}),o.onMessage(function(n){e.resetHeartbeatTimeout(),e.emit("message",n)}),o.onClose(function(n){e.isConnected=!1,console.log("Connection closed",n),e.stopHeartbeat(),e.emit("close",n),!(o!==e.socketTask||e.manualClose)&&e.reconnect()}),o.onError(function(n){if(console.error("WebSocket error: ",n),e.emit("error",n),o===e.socketTask){e.isConnected=!1,e.stopHeartbeat();try{o.close({code:1e3,reason:"error"})}catch(a){}e.manualClose||e.reconnect()}}),this}},{key:"send",value:function(e){return this.isConnected&&this.socketTask?this.socketTask.send({data:e}):console.error("WebSocket is not connected"),this}},{key:"startHeartbeat",value:function(){var e=this;this.stopHeartbeat(),this.heartbeatTimer=setInterval(function(){e.isConnected&&(e.send(e.heartbeatMsg),e.startHeartbeatTimeout())},this.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.clearHeartbeatTimeout()}},{key:"startHeartbeatTimeout",value:function(){var e=this;this.clearHeartbeatTimeout(),this.heartbeatTimeoutTimer=setTimeout(function(){console.warn("Heartbeat timeout, close socket"),e.socketTask&&e.socketTask.close()},this.heartbeatTimeout)}},{key:"resetHeartbeatTimeout",value:function(){this.clearHeartbeatTimeout()}},{key:"clearHeartbeatTimeout",value:function(){this.heartbeatTimeoutTimer&&(clearTimeout(this.heartbeatTimeoutTimer),this.heartbeatTimeoutTimer=null)}},{key:"reconnect",value:function(){var e=this;if(!(this.isConnected||this.reconnectTimer)){if(this.maxReconnect!==-1&&this.reconnectCount>=this.maxReconnect){console.log("Reach max reconnect count, stop reconnect");return}this.reconnectCount+=1,console.log("Reconnecting in ".concat(this.reconnectDelay/1e3," seconds... count:").concat(this.reconnectCount)),this.reconnectTimer=setTimeout(function(){e.reconnectTimer=null,e.connect()},this.reconnectDelay)}}},{key:"close",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e3,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";this.manualClose=!0,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectCount=0,this.socketTask&&this.socketTask.close({code:e,reason:t})}}])}();exports.WebSocketClient=c;exports.default=c;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utils-uniapp",
3
- "version": "1.2.5",
3
+ "version": "1.2.8",
4
4
  "description": "aubyn's utils for uniapp",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",