Magasin
Le Magasin L'interface définit une abstraction de stockage clé-valeur par session pour socketio4j. Elle permet aux transports, aux espaces de noms et au code utilisateur de conserver de petits éléments de métadonnées à l'échelle de la session tels que les identifiants d'utilisateur, les jetons d'authentification, l'état de connexion ou des indices d'appartenance à des salons — indépendamment de l'implémentation réelle du stockage sous-jacent.
Caractéristiques principales
Stockage au niveau de la session — une instance de store existe par session client connectée
Sémantique clé-valeur — objets arbitraires associés à des clés de type chaîne
Indépendant du backend — les implémentations peuvent utiliser la mémoire, Hazelcast, Redis ou d'autres magasins de données
Conscient du cycle de vie — détruit lorsque le client sous-jacent se déconnecte
Récupération typée — les valeurs retournées peuvent être castées ou typées génériquement
Comment ça marche
setassocie une valeur à une clé pendant la durée de vie de la sessiongetretourne une valeur stockée, ounullsi elle n'est pas présentehasvérifie l'existence d'une clé sans charger la valeurdelsupprime une entrée clé-valeur uniquedestroysupprime toutes les entrées, invalidant l'instance de store
Scénarios d'utilisation
Authentification
store "userId", "tenant", "tokenClaims"
Indices de reconnexion
store "rooms" ou métadonnées personnalisées
Paramètres personnalisés de la poignée de main
conserver des métadonnées utilisateur lors de la mise à niveau/poignée de main
Logique par espace de noms
joindre l'état nécessaire uniquement pendant la session en cours
Avantages
👍 Fonctionne de manière uniforme en mode cluster et autonome 👍 Garde les métadonnées de session isolées pour chaque connexion 👍 Permet de changer le backend de stockage sans modifier le code utilisateur 👍 Prend en charge une opération légère en mémoire pour les déploiements mono-nœud
Limitations
ℹ️ Non destiné aux objets volumineux ou au stockage binaire ℹ️ N'est pas un modèle de données distribué en soi — la distribution dépend de l'implémentation ℹ️ Pas de TTL intégré ni d'expiration au-delà du cycle de vie de la session ℹ️ Non partagé entre les sessions sauf s'il est soutenu par un stockage partagé
Comportement du backend
En mémoire
Éphémère, effacé à la déconnexion ou au redémarrage de la JVM
Local uniquement
Le plus rapide, idéal pour un seul nœud
Hazelcast / Redis(redis, valkey, dragonflydb)
Distribué (selon la configuration du backend)
Accessible entre les nœuds
Recommandé pour les déploiements multi-nœuds
Garantie de cycle de vie
Une instance de Store vit exactement pendant une session client et est détruite lorsque la session se termine. Après avoir appelé
destroy(), le store ne doit plus être accédé.Appelé automatiquement lorsque le client se déconnecte.
Exemple
Mis à jour
Ce contenu vous a-t-il été utile ?