2017-06-29 2 views
1

Je souhaite détecter la déconnexion du client au niveau du serveur lorsque le client éteint ou perd sa connexion Internet et la supprime du client de liste. Puis-je le faire ?Comment détecter la déconnexion du client sur le serveur lorsque le client éteint ou a perdu la connexion Internet dans netty

J'essaie un problème mais ça ne fonctionne pas. Ceci est mon code:

final ChannelFuture cf = chc.channel().writeAndFlush(new TextWebSocketFrame(dataSend)); 
      cf.addListener(new GenericFutureListener<Future<? super Void>>() { 

       public void operationComplete(Future<? super Void> f) throws Exception { 

        if (!cf.isSuccess()) { 

         ServerHandler.agentChannelList.get(tranfer.getUsername()).remove(chc); 
         if (ServerHandler.agentChannelList.get(tranfer.getUsername()).isEmpty()) { 
          if (ServerHandler.agentOnlineQueue.containsKey(tranfer.getPage_id())) { 
           ServerHandler.agentOnlineQueue.get(tranfer.getPage_id()).remove(tranfer.getUsername()); 
          } 
         } 
        } 
       } 

      }); 

Répondre

2

La seule « vraie » solution est de mettre en œuvre quelque chose comme un « ping/pong » dans votre protocole. Fondamentalement, vous écrivez à l'homologue distant et si l'écriture échoue ou si l'homologue distant ne répond pas, vous supposerez qu'il est mort.