Forma correcto para enviar paquetes de heartbeat(latido)?

172 views
Skip to first unread message

Andrew G

unread,
Nov 13, 2015, 8:21:09 PM11/13/15
to opengts
Los dispositivos que utilizo esperan recibir paquetes de heartbeat (latido) cada cierto cantidad de minutos para verificar que siga activo la connexion. Si el equipo no reciba ese paquete de parte del servidor dentro del tiempo determinado el equipo cierre la sesion y vuelve a conectar. Cual es la forma correcto para que el DCS envia un paquete cada por ejemplo cada 7 min a todo los equipos que tienen sesiones activo?

Gracias
Andrew

Hernan Diaz

unread,
Nov 13, 2015, 10:06:03 PM11/13/15
to opengts
Tengo entendido que es a la inversa:
Es el AVL quien envía un ACK/LOAD/KEEPALIVE  y espera una respuesta por parte de el servidor , caso contrario reinicia el socket y establece una nueva conexión.
Nunca vi un socket TCP que el keep-alive sea iniciado por el servidor, se puede, pero estaría violando el protocolo TCP/IP.
Normalmente el ACK es iniciado por el cliente.

la respuesta a un ACK la gestiona TrackClientPacketHandler.java en su Workhorse:
/* TK103-2: keep-alive packet? */
        if (s.startsWith("##")) {
            // TK103-2: keep-alive packet?
            //   ##,imei:123451042191239,A;
            Print.logInfo("TK103-2 Header: " + s); // debug message
            return "LOAD".getBytes(); // ACK "Load"
        } else
...
..
.


los keep-alive en un tk103-2 comienzan con "##" y espera "LOAD" como respuesta.
Una ves recibido el "LOAD" envían el Evento.

En muchos AVL el ACK ocurre en la capa OSI #5 (capa de sesión)  y es gestionado directamente por java.net a nivel Socket sin intervención alguna de GTS. es un "administrative packet" sin contenido ni data. 

Andrew Geddes

unread,
Nov 14, 2015, 12:57:39 AM11/14/15
to ope...@googlegroups.com
Si con la mayoría de los AVL funcionan de la forma inversa como dice, pero tenemos unos 60 AVL activo que funcionan esperando el heartbeat por lo menos cada 9 min. Incluso el fabricante cambio el formato del tramo cuando se hizo un cambio de version de hardware para que la nueva version manda el heartbeat desde el equipo. Ahora tenemos un DCS que si envía el paquete de Heartbeart pero la forma que lo tenemos implementado no permita que cierran la sesiones cuando ya no están activo o cuando hay un cambio de IP.

--
Has recibido este mensaje porque estás suscrito al grupo "opengts" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a opengts+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages