Netty Channel cerró la detección

Estoy desarrollando una aplicación de server cliente usando netty y ios, me encuentro con un problema cuando el usuario simplemente apaga WiFi en su dispositivo ios, el server netty no lo sabe. El server necesita saber para hacer la limpieza para ese usuario y establecerlo fuera de línea, pero ahora cuando el usuario intenta conectarse nuevamente, el server solo le dice que ya está en línea.

Si entendí tu problema correctamente: deseas escuchar los events cerrados del canal del cliente en el lado del server y realizar algunas sesiones de limpieza,

Hay dos maneras de escuchar events cerrados de canal en Netty:

1) Si su controller de server extiende SimpleChannelHandler/SimpleChannelHandler , entonces puede anular el método siguiente y escribir allí la lógica de limpieza de la session

 public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception; 

2) Si solo tiene acceso a la reference de canal, puede get el canal en un futuro cercano y registrar su implementación de ChannelFutureListener con su lógica de limpieza de session,

 ChannelFuture closeFuture = channel.closeFuture(); closeFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { //session cleanup logic } }); 

Use IdleStateHandler

Puede detectar cuándo no hay requestes / respuestas en intervalos de time determinados.

Verifique el ID de session y permita la renegociación. O puede usar algo como el controller de cookies. ¿Puedo preguntar sobre la pregunta del tema: ¿Cómo interactúa su cliente en iOS con el server Netty? (¿Qué marco utiliza en el lado del cliente y qué decodificador / codificador usa?)