Hola Luis
al cabo de unas horas
yo lo pongo solo unos pocos minutos
A ver, la interfaz web de MX corre en su propio servidor web (puerto 8998 que es el que le ponemos en la URL) y esa página principal de los instrumentos va por websockets por defecto, esto quiere decir que se establece un canal de comunicación entre cliente (navegador) y servidor (MX) en el que se van actualizando los datos. Si hay algún fallo en esa comunicación se corta y aparece lo de "connection is closed" con la única solución de tener que recargar la página, peeeeero eso es algo que se puede controlar en el javascript que gestiona el websocket.
El javascript está en la carpeta
interface/js de MX y se llama
dashboard.js. La función que maneja el websocket está en la línea 104 y se llama
function OpenWebSocket(wsport). Dentro de esa función están las siguientes líneas:
// websocket is closed.
ws.onclose = function () {
alert('Connection is closed...');
};
Eso es lo que salta cuando se termina la conexión del webscoket. Si le ponemos un timeout o intervalo de espera podemos hacer que reconecte tras x segundos.
Dejaríamos esas líneas así:
// websocket is closed.
ws.onclose = function(e) {
var tiempo = 30; // segundos
console.log('Socket cerrado. Reconexión en ' + tiempo + ' segundos.', e.reason);
setTimeout(function() {
OpenWebSocket(wsport);
}, tiempo * 1000);
};
En esa línea de
var tiempo = 30 le ponemos los segundos en los que queremos que reconecte el websocket.
No se sabe cuánto tiempo pierde la conexión, pero es algo raro ya que no es un servidor externo (MX está en el propio PC), otra cosa es si lo estamos viendo desde otro equipo donde sí podría haber problemas de conexión.
Otra alternativa en vez de usar websockets es usar llamadas ajax. Se configura en el mismo archivo
dashboard.js. En la línea 4 aparece:
let useWebSockets = true; // set to false to use Ajax updatingSi en vez de
true ponemos
false como dice en el comentario haremos llamadas ajax a un archivo de texto que genera MX, por lo tanto no se usa ese canal de websockets y no se cortará la conexión pero si no hay conexión cliente-servidor no habrá actualización de datos, pero nos ahorramos que haya que recargar página.
Siempre después de hacer algún cambio de estos hay que reiniciar MX.
Esto como se suele decir es un "apaño" (workaround en inglés
) pero da una pista de que puede haber un problema de conexión entre el servidor de MX y el navegador. Eso ya sería un tema a investigar si es dentro o fuera del equipo que corre MX.
Prueba la primera opción del timeout y si no la segunda del ajax.
Y cuidado, si actualizas con nueva versión de MX socreescribirá los cambios del
dashboard.js así que haz copia en otro sitio y pégala cuando actualices.