PrivyDrop Logo

Un clic et ça repart, solide comme un roc : Auto‑join via ID en cache et reconnexion résiliente dans PrivyDrop

par david bai

Introduction : pourquoi « auto‑join » et « reconnexion »

Les nouveaux utilisateurs de PrivyDrop rencontrent souvent deux petites frictions :
  • En passant d’Envoyer à Recevoir, il faut recoller l’ID de salle ;
  • Sur un Wi‑Fi de café ou en 4G, une micro‑coupure impose une reconnexion manuelle.
Des détails ? Oui. Mais très fréquents dans le monde réel — ils font la différence entre « ça marche » et « c’est fluide ». Nous avons donc livré deux finitions qui rendent l’expérience vraiment soyeuse :
  • « Auto‑join via ID en cache » côté récepteur : si les conditions sont réunies, on pré‑remplit et on rejoint la salle automatiquement ;
  • « Reconnexion résiliente » de bout en bout : que Socket ou P2P tombe, la négociation et la connexion se rétablissent seules.
Le tout sans toucher à notre ligne rouge architecturale : le backend ne fait que la signalisation et la gestion de salle ; les fichiers restent chiffrés de bout en bout, directement de navigateur à navigateur.

Fonction 1 : Auto‑join du récepteur avec ID en cache

Lorsque vous passez à l’onglet Récepteur, si les conditions suivantes sont réunies, le dernier ID de salle en cache est pré‑rempli et l’entrée est immédiate :
  • Vous êtes sur l’onglet Récepteur et pas encore dans une salle ;
  • L’URL ne contient pas roomId (l’URL l’emporte — pas d’écrasement) ;
  • Le champ de saisie est vide (on ne remplace pas votre saisie) ;
  • Un ID en cache existe dans le localStorage.
La logique se déclenche au changement d’onglet. Si c’est bon, on remplit d’abord, puis on appelle aussitôt la routine d’entrée — un collage/clic de moins.
Quand cela ne s’applique‑t‑il pas ?
  • Vous êtes déjà dans une salle ;
  • L’URL porte explicitement roomId (lien de partage avec paramètre) ;
  • Le champ contient déjà un texte en cours de saisie ;
  • Aucun ID en cache n’est trouvé.

Fonction 2 : « Enregistrer / Utiliser l’ID en cache » côté émetteur (double‑clic pour mettre à jour)

Sur l’émetteur, le champ d’ID accueille un bouton « Réutiliser » astucieux qui alterne entre deux états :
  • Enregistrer l’ID : quand la longueur ≥ 8, le bouton s’active ; un clic enregistre la saisie courante comme ID en cache.
  • Utiliser l’ID en cache : s’il existe, un clic l’insère et rejoint la salle immédiatement ; un double‑clic bascule ~3 s en « Enregistrer l’ID » pour actualiser le cache.
Notes d’implémentation :

Reconnexion : de la détection au rétablissement complet

Nous surveillons trois points d’entrée et déclenchons la reconnexion :

Séquence (Mermaid)

Détails de fiabilité

Stratégie de réutilisation : IDs courts vs longs


Prise en main (hands‑on)

Essai rapide sur desktop :
  1. Côté Émetteur, entrez un ID personnalisé (≥ 8 caractères) et cliquez « Enregistrer l’ID ».
  2. Passez au Récepteur : si les conditions sont réunies, auto‑remplissage et entrée immédiate.
  3. Simulez une coupure (coupure Wi‑Fi, bascule hotspot, actualiser puis revenir) et observez la reconnexion automatique.
  4. Côté Émetteur, double‑cliquez « Utiliser l’ID en cache » pour basculer brièvement en « Enregistrer l’ID » et mettre à jour vers un nouvel ID long.
Mobile / réseaux difficiles :
  • Arrière‑plan → premier plan ; bascule Wi‑Fi ↔ cellulaire.
  • Vérifiez l’auto‑entrée du Récepteur et la reprise automatique du transfert.

Conclusion & appel à l’action

Plus la connexion est fluide, plus la valeur du P2P grandit. L’auto‑join via ID en cache et la reconnexion résiliente renforcent la robustesse de PrivyDrop dans les réseaux réels.
Si vous aimez, mettez‑nous une étoile sur GitHub (https://github.com/david-bai00/PrivyDrop) — cela accroît la visibilité et nourrit notre envie de peaufiner.
Essai en ligne : https://www.privydrop.app. Vos retours et idées sont bienvenus via les issues : continuons ensemble à polir « l’expérience soyeuse ».
Par ailleurs, notre domaine bénéficie de l’accélération Cloudflare CDN, améliorant nettement vitesse et stabilité inter‑régions.
Pour aller plus loin :