En la letra se lee: "Habrá un timeout para que el servidor desconecte clientes inactivos, definido por la implementación."
El concepto de inactivo no se define, y por lo tanto asumimos que quedaba libre a la interpretación/implementación que cada uno le quisiera dar.
En nuestro caso lo que se hizo fue: definir un nuevo mensaje de aplicación: "ALIVE<CR>" enviado por el servidor periódicamente a cada uno de los clientes, al cuál los clientes responden automáticamente.
Es una especie de ping. La respuesta a uno de estos mensajes actualiza el "last_seen" del cliente correspondiente (este también se actualiza al recibir un mensaje de dicho cliente).
Bajo esta implementación un cliente se considera "inactivo" si su "last_seen" supera cierto margen.
Por otro lado según se disctió en este hilo: https://eva.fing.edu.uy/mod/forum/discuss.php?d=72963 el mensaje de GOODBYE que envíá el servidor debe enviarse "Por lo menos en el timeout. Luego si quieren hacerlo también como respuesta del logout, pueden." En nuestro caso esto es superfluo, ya que la no respuesta a un mensaje ALIVE, implica que el cliente ya no está conectado, y por lo tanto nunca recibirá el mensaje de GOODBYE. Y sí enviamos GOODBYE cuando un cliente se desconecta explícitamente.
Mi pregunta es, dado que en la letra no se aclaró el concepto de incativo, ni la semántica de los mensajes, ¿es correcta nuestra implementación/interpretación de este punto?
Gracias.