Hola,
tenemos un producto que hace uso del cliente de firma a través del javascript autoscript.js (versión 1.8.2), y nos hemos encontrado con problemas a la hora de comprobar la disponibilidad de la aplicación en un entorno del Ministerio de Economía en el cual los usuarios acceden a la aplicación a través de un escritorio virtual (o VDI).
Tras estudiar la problemática y realizar las pertinentes pruebas hemos tomado la decisión de modificar el script paral que el tiempo entre los distintos reintentos no sea siempre el mismo, sino que vaya aumentando exponencialmente con cada reintento. De este modo se favorezca a los dispositivos con mejor respuesta inicialmente (ya que los intervalos en las primeras repeticiones son similares al configurado en la propiedad AUTOFIRMA_LAUNCHING_TIME), y este tiempo se aumente en las últimas repeticiones para dar soporte a dispositivos con una respuesta más lenta (tal y como muestra la siguiente figura)
Los cambios en código realizados son:
Definir la función con la lógica de obtención del tiempo de espera
// Tiempo de espera entre los intentos de conexion con autofirma por WebSocket
var AUTOFIRMA_LAUNCHING_TIME = 2000;
// Nuevo PLYCA
function getVariableAutofirmaLaunchingTime(numOfAttempt) {
return 1000 * (AUTOFIRMA_LAUNCHING_TIME / 1000 - 1 + 10 ** (1 - ((numOfAttempt | 0) / AUTOFIRMA_CONNECTION_RETRIES)))
}
// Fin nuevo PLYCA
Aplicar la función
/** Comprobacion recursiva de la disponibilidad de la aplicacion en los distintos
* puertos hasta un maximo del numero de intentos indicados. */
function waitAppAndProcessRequest(ports, retries) {
if (!connected) {
if (retries > 0) {
// Tratamos de conectar al websocket a traves de cualquiera de los posibles puertos
for (var i = 0; !connected && i < ports.length; i++) {
createWebSocket(ports[i]);
}
// Nuevo PLYCA
const waitFor = getVariableAutofirmaLaunchingTime(retries);
console.log('Intento ' + (AUTOFIRMA_CONNECTION_RETRIES - retries + 1) + ' repitiendo operadcion en ' + waitFor + 'ms');
setTimeout(waitAppAndProcessRequest, waitFor, ports, retries - 1);
// Fin Nuevo PLYCA
// setTimeout(waitAppAndProcessRequest, AutoScript.AUTOFIRMA_LAUNCHING_TIME, ports, retries - 1);
}
else {
processErrorResponse("es.gob.afirma.standalone.ApplicationNotFoundException", "No se ha podido conectar con AutoFirma.");
}
}
else {
// Enviamos la peticion
console.log("Enviamos el mensaje al socket");
processRequest(AutoScript.AUTOFIRMA_CONNECTION_RETRIES);
}
}
¿Sería posible evaluar incorporar nativamente en autoscript.js este funcionamiento?
Hola, tenemos un producto que hace uso del cliente de firma a través del javascript autoscript.js (versión 1.8.2), y nos hemos encontrado con problemas a la hora de comprobar la disponibilidad de la aplicación en un entorno del Ministerio de Economía en el cual los usuarios acceden a la aplicación a través de un escritorio virtual (o VDI).
Tras estudiar la problemática y realizar las pertinentes pruebas hemos tomado la decisión de modificar el script paral que el tiempo entre los distintos reintentos no sea siempre el mismo, sino que vaya aumentando exponencialmente con cada reintento. De este modo se favorezca a los dispositivos con mejor respuesta inicialmente (ya que los intervalos en las primeras repeticiones son similares al configurado en la propiedad AUTOFIRMA_LAUNCHING_TIME), y este tiempo se aumente en las últimas repeticiones para dar soporte a dispositivos con una respuesta más lenta (tal y como muestra la siguiente figura)
Los cambios en código realizados son:
Aplicar la función
¿Sería posible evaluar incorporar nativamente en autoscript.js este funcionamiento?