2017-10-16 4 views
0

Lors de la mise à disposition d'un client gRPC, mon serveur alloue les ressources que je souhaite libérer lorsque le client se déconnecte.gRPC Java: Comment savoir si un client se déconnecte brutalement (côté serveur)?

Ma question est: comment gérer correctement la situation lorsque les clients se déconnectent brusquement?

+0

Si la déconnexion se produit pendant que vous écrivez des données dans la réponse, le conteneur Web lancera une exception d'E/S particulière, par exemple tomcat lancera une exception 'org.apache.catalina.connector.ClientAbortException'. – MartinByers

+0

@MartinByers: Oh mon diable! Merci beaucoup pour ce problème. – anhldbk

Répondre

0

Cela ne pose généralement pas de problème, car l'API du serveur est basée sur des RPC plutôt que sur des transports. Par exemple, vous ne pouvez pas allouer de ressources spécifiques à une connexion, car la connexion ne vous est pas exposée.

C'est une bonne idée de ne pas baser les décisions de ressources sur les connexions, car elles se décomposent lorsque des proxys sont impliqués. Par exemple, si vous avez un proxy de terminaison TLS devant votre serveur gRPC, toutes les connexions sembleront provenir du même "client" même si en réalité ce n'est pas le cas. Remarque: il existe des moyens d'approximer une connexion (en examinant l'adresse de socket du client), mais il n'y a aucun moyen de savoir quand la connexion a disparu. L'adresse est purement informative.