var objConexion; var appName='Latis Utilities'; class cLatisUtilities { _objConf; _connected; _ipServer; _port; _wsImplLatis ; _wsLatis; _funcOnOpen; _funcOnMessageRespuesta; _funcOnMessageEventos; _funcOnMessagePetciones; _self; _ultimaPeticion; _funcOnError; constructor(objConf) { this._objConf=objConf; this._connected=false; this._ipServer=objConf.urlHost; this._port=objConf.puerto; this._wsImplLatis = window.WebSocket || window.MozWebSocket; this._wsLatis = new this._wsImplLatis('ws://'+this._ipServer+':'+this._port+'/'); //msgBox('No se ha podido conectar con '+appName+', verifique que la aplicación se esté ejecutando'); this._funcOnOpen=objConf.funcOnOpen; this._funcOnMessageRespuesta=objConf.funcOnMessageRespuesta; this._funcOnMessageEventos=objConf.funcOnMessageEventos; this._funcOnMessagePeticiones=objConf.funcOnMessagePeticiones; this._funcOnError=objConf.funcOnError; this._self=this; objConexion=this; this._wsLatis.onerror =this.onError this._wsLatis.onmessage = this.onMessage; this._wsLatis.onopen = this.onOpen this._ultimaPeticion=''; } onError(e) { var self=objConexion; ocultarMensajeProcesando(); self._connected=false; if(self._funcOnError) self._funcOnError(e); } onMessage(e) { var self=objConexion; var cObj=eval('['+e.data+']')[0]; console.log(cObj); switch(parseInt(cObj.tipoMensaje)) { case 1://EVENTO if(self._funcOnMessageEventos) { self._funcOnMessageEventos(cObj,e); } break;//Respuesta case 2: if(self._funcOnMessageRespuesta) { self._funcOnMessageRespuesta(cObj,e); } break;//Peticion case 3: if(self._funcOnMessagePeticiones) { self._funcOnMessagePeticiones(cObj,e); } break; } } onOpen(e) { var self=objConexion; self._connected=true; if(self._funcOnOpen) self._funcOnOpen(e); } isConected() { return this._wsLatis.readyState==1; } reconect(msg) { mostrarMensajeProcesando('Intentando reconectar con '+appName); this._wsLatis = new this._wsImplLatis('ws://'+this._ipServer+':'+this._port+'/'); this._wsLatis.onerror =this.onError this._wsLatis.onmessage = this.onMessage; this._wsLatis.onopen = this.onOpen this._funcOnOpen=this._objConf.funcOnOpen; this._funcOnMessageRespuesta=this._objConf.funcOnMessageRespuesta; this._funcOnMessageEventos=this._objConf.funcOnMessageEventos; this._funcOnMessagePeticiones=this._objConf.funcOnMessagePeticiones; this._funcOnError=this._objConf.funcOnError; var oMsg=eval('['+msg+']')[0]; var arrParametros=[]; for(x=0;x<8;x++) { arrParametros.push(oMsg[('data'+(x+1))]); } var tareaActiva=setInterval(function() { if( objConexion.isConected()) { clearInterval(tareaActiva); ocultarMensajeProcesando(); objConexion.sendMessage(oMsg.cDispositivo,oMsg.IDDispositivo,oMsg.comando,arrParametros); } }, 500); } reenviarUltimaPeticion() { if(this._ultimaPeticion!='') { var arrParametros=[]; for(x=0;x<8;x++) { arrParametros.push(this._ultimaPeticion[('data'+(x+1))]); } objConexion.sendMessage(this._ultimaPeticion.cDispositivo,this._ultimaPeticion.IDDispositivo,this._ultimaPeticion.comando,arrParametros); } } sendMessage(cDispositivo,IDDispositivo,msg,parametros) { var objMsg='{"resultado":"","msgError":"","tipoMensaje":"PETICION","IDDispositivo":"'+IDDispositivo+'","cDispositivo":"'+cDispositivo+'","comando":"'+msg+'"'; var x; for(x=0;x<8;x++) { objMsg+=',"data'+(x+1)+'":"'+(parametros[x]?cv(parametros[x]):'')+'"'; } objMsg+='}'; this._ultimaPeticion=eval('['+objMsg+']')[0]; if(this.isConected()) this._wsLatis.send(objMsg); else { ocultarMensajeProcesando(); var self=this; function resp(btn) { if(btn=='yes') self.reconect(objMsg); } msgConfirm('¿Se ha perdido la conexión con la aplicacion '+appName+', desea intentar reconectar?',resp); } } cerrarSocket() { if(this._wsLatis ) this._wsLatis.close(); } }