IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Fonction de reconnexion automatique après une perte de connexion


Sujet :

Langage Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 990
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 990
    Points : 6 237
    Points
    6 237
    Par défaut Fonction de reconnexion automatique après une perte de connexion
    Bonjour,

    J'ai une application mobile qui se connecte à une base de données par wifi. En cas de perte de la communication avec le serveur de BD, je lance une procédure qui tente périodiquement de reprendre la connexion.

    Problème: J'affiche une fenêtre indiquant un "connexion en cours..." avec un bouton "quitter" qui devrait me permettre de fermer l'application. "Devrait" parce que lorsque l'utilisateur presse le bouton quitter, l'event n'est pas pris en compte

    Méthode utilisée: En cas de perte de la connexion, j'active un timer qui essaie périodiquement de faire la connexion. Si connexion OK, le timer est désactivé. J'y ai mis un "try connection.open except Application.ProcessMessages" dans l'espoir que le clic du bouton soit pris en compte mais cela ne fonctionne pas.

    J'ai l'impression que je n'ai pas pris le problème par le bon bout

    Est-ce que quelqu'un a déjà été confronté à ce genre de problème?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 504
    Points : 2 776
    Points
    2 776
    Billets dans le blog
    10
    Par défaut
    Ce petit exemple peut te donner des idées. Documentation dans le pdf
    ex_socket.zip
    CoursDelphiXE10Septembre.pdf

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Est-ce que quelqu'un a déjà été confronté à ce genre de problème?
    J'ai bien été confronté à ce même soucis mais à l'époque j'utilisais ZEOSDBO

    Qui dit application mobile dit quand même une version récente de Delphi (encore une fois indiquer la version est quand même un gros plus), encore que, il faut s'entendre sur le terme de mobile (smartphones ou postes de travail windows "nomades")
    Et qui dit version récente+mobile (smartphones) dit encore plusieurs choix de bibliothèques de composant disponible (DBExpress, FireDac ...)

    Saviez-vous que Firedac gère ce problème ? Pour info, je n'ai pas tester encore cette fonctionnalité et en écrivant ma réponse j'étais persuadé d'avoir vu quelque-chose comme un
    auto-reconnect quelque part mais ce matin je ne le vois plus

    Encore un sujet de webinaire pour Patrick Prémartin surtout qu'il y a fait allusion lors de la session du 16 octobre (nb. il va encore falloir patienter un peu pour le replay


    J'ai l'impression que je n'ai pas pris le problème par le bon bout
    AMHA Oui surtout à l'aune de la palette d'évènements proposés par FDConnexion.

    Après, cela dépend beaucoup du SGBD utilisé et il faudra aussi certainement pouvoir gérer les délais de détection de perte de connexion

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 990
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 990
    Points : 6 237
    Points
    6 237
    Par défaut
    Bonjour et merci pour vos interventions.

    Je n'ai pas indiqué de version d'EDI parce que j'ai le même problème pour plusieurs EDI (Delphi tokyo en VCL pour une application pour tablette avec OS windows Win7 à 10, Delphi tokyo en FMX pour smartphone Android et Lazarus pour une application destinée à WinCE7). Idem pour les composants utilisés pour la connexion à la base de données.

    Mon problème ne se situe pas au niveau de la détection de la perte de connexion et du processus de reprise automatique de la connexion, cette partie fonctionne parfaitement (la perte de connexion est détectée > les tentatives de connexion sont effectuées selon la fréquence désirée jusqu'à ce que la connexion soit à nouveau établie > Quand la connexion est établie, l'application retourne à son fonctionnement normal).

    Le problème se situe au niveau du bouton "Quitter" qui devrait permettre à l'utilisateur de mettre fin à la procédure de reconnexion sans attendre que la reconnexion se fasse. Autrement dit comment forcer l'application à prendre en compte la pression du bouton alors quelle est occupée à attendre une réponse à sa demande de connexion.

    Et là, ce n'est pas à mon humble avis un problème d'EDI ou de composant mais bien d'approche: Est-ce que l'usage du timer rend impossible la détection de l'évènement "bouton pressé"? Faut-il chercher la solution dans le multi-threading, etc.?

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Le problème se situe au niveau du bouton "Quitter" qui devrait permettre à l'utilisateur de mettre fin à la procédure de reconnexion sans attendre que la reconnexion se fasse. Autrement dit comment forcer l'application à prendre en compte la pression du bouton alors quelle est occupée à attendre une réponse à sa demande de connexion.
    Je n'avais donc absolument pas compris la question, noyée dans la masse.


    Et là, ce n'est pas à mon humble avis un problème d'EDI ou de composant mais bien d'approche
    effectivement

    Faut-il chercher la solution dans le multi-threading, etc.?
    C'est une très bonne piste. Il suffit d'écouter le Olaf Monien dans le dernier BootCamp (7) en date pour en être persuadé si je résume en très gros son opinion "bannissez les processmessages"
    Quant au timer je suis loin d'être adepte, le nombre de tentatives maxi me semble honnête et suffisant, un timer entre chaque tentative ? je suis pas fan

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Bonsoir,

    Même si effectivement un thread pourrait aider, cela proviens peut-être du délai de ton timer.

    Méthode utilisée: En cas de perte de la connexion, j'active un timer qui essaie périodiquement
    Périodiquement = ? (combien de milliseconde)

    L'utilisateur n'a peut-être pas le temps de cliquer, même si Application.processMessage devrait reprendre le clique.
    Sauf si tu clique ailleurs entre temps ou si tu focus un composant dans ton processus.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/03/2014, 10h55
  2. [11gR2] Restore après une perte de données inefficace
    Par CleeM dans le forum Recovery Manager
    Réponses: 4
    Dernier message: 15/03/2013, 10h19
  3. Réponses: 2
    Dernier message: 06/07/2012, 13h33
  4. [Dataguard} Reconnexion automatique après switchover
    Par orafrance dans le forum Administration
    Réponses: 1
    Dernier message: 03/07/2009, 10h30
  5. Valider automatiquement après une saisie ?
    Par nd25 dans le forum Débuter
    Réponses: 3
    Dernier message: 05/08/2008, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo