Question

Je cherche à détecter la perte de connexion locale. Y at-il un moyen de le faire, comme les événements sur les composants Corelabs?

Merci

EDIT: Désolé, je vais essayer d'être plus précis: Je conçois actuellement un prototype utilisant datasnap 2009. J'ai un client léger, une application serveur sans état et un serveur de base de données.

Ce que je serais en mesure de le faire est de détecter et de gérer la perte de connexion (connectivité Internet) entre le client et l'application serveur pour gérer de manière appropriée, à savoir: Afficher un message d'erreur d'information à l'utilisateur ou pour détecter un arrêt du serveur silencieusement rediriger sur un autre serveur d'application.

Dans 2 niveaux, je gérais que des composants ODAC, le TOraSession ont quelques événements pour gérer ce problème.

Était-ce utile?

La solution

Normalement, il n'y a pas événement déclenché lorsqu'une connexion est interrompue, à moins qu'une déclaration est tirée contre la base de données. Ceci est parce qu'il n'y a aucun moyen de savoir une perte de connexion moins qu'il y ait une sorte de vie est--pinger passe.

De nombreux cadres vérifier si une connexion est toujours valide en faisant une petite requête sur le serveur. Pourriez obtenir le temps d'un serveur. Surtout dans un environnement de mise en commun de connexion.

Vous pouvez implémenter une fonction de vérification de connexion dans votre application dans certains des événements de base de données (BeforeExecute?). Ou faire une minuterie qui vérifie toutes les 10 secondes.

Autres conseils

Spawn un filetage sur le client qui envoie périodiquement un certain RPC « Ping » ou « battement de coeur » commandes au serveur.

  • si cela échoue, le client sait que quelque chose est arrivé à la connexion

  • si le serveur ne l'entend pas le client plus pendant une certaine période de temps (par exemple, deux fois l'intervalle de pulsation), il peut conclure que le client déconnecté, mais cela nécessite un serveur stateful (et votre conception est sans état de sorte qu'il faudrait traitement d'événement dans un système secondaire, qui peut être alimenté à travers une file d'attente de message)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top