Introduction
Ouvrez une connexion WebSocket en temps réel pour recevoir des mises à jour de contenu, de commandes et d'utilisateurs sans sondage.
Plus d'informations sur l'interface utilisateur du module https://doc.oneentry.cloud/docs/events/introduction
🎯 Que fait ce module ?
Le module WS (WebSocket) vous permet de recevoir des notifications en temps réel - mises à jour de contenu, changements de commandes, actions des utilisateurs - via une connexion persistante, de sorte que le serveur vous envoie les mises à jour instantanément au lieu que vous les sondiez. Cela permet des fonctionnalités en direct comme les notifications, le chat en direct et les tableaux de bord en temps réel.
La méthode unique, connect(), ouvre la connexion et renvoie un Socket de socket.io. Elle est synchronisée et nécessite un utilisateur autorisé, donc authentifiez-vous d'abord.
🚀 Démarrage rapide
Initialisez le module depuis defineOneEntry :
const { WS } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
connect() est synchrone et renvoie un Socket de socket.io (pas d'await). Attachez des gestionnaires d'événements avec socket.on(...) :
// connect() requires an authorized user — authenticate first via AuthProvider.
const socket = WS.connect();
socket.on('connect', () => {
console.log('WebSocket connected');
});
// Listen for an event by its marker (configured in the Events module).
socket.on('my_event', (payload) => {
console.log('Update received!', payload);
});
✨ Concepts clés
Qu'est-ce que WebSocket ?
WebSocket est une connexion bidirectionnelle persistante entre le client et le serveur :
- Connexion persistante - Reste ouverte, pas de poignées de main répétées
- Bidirectionnelle - Le client et le serveur peuvent envoyer des messages
- En temps réel - Livraison instantanée des messages
- Basé sur les événements - Écoutez les événements avec
socket.on(...) - Efficace - Faible surcharge par rapport au sondage HTTP
WebSocket vs Sondage HTTP
| Fonctionnalité | WebSocket | Sondage HTTP |
|---|---|---|
| Connexion | Persistante (reste ouverte) | Connexions répétées |
| Latence | Moins d'une seconde | Dépend de l'intervalle (2-30s) |
| Efficacité | Très efficace | Gaspillage (de nombreuses réponses vides) |
| Charge serveur | Faible (événements uniquement) | Élevée (demandes constantes) |
| Cas d'utilisation | Mises à jour en temps réel | Acceptable pour des mises à jour non critiques |
Cycle de vie de la connexion
1. Authenticate the user (AuthProvider.auth)
↓
2. Open the connection: const socket = WS.connect()
↓
3. Wait for the 'connect' event: socket.on('connect', ...)
↓
4. Listen for events: socket.on('<event_marker>', callback)
↓
5. Server pushes events as they occur
↓
6. Disconnect when done: socket.disconnect()
Quels événements arrivent par la connexion
Il n'y a pas de catalogue fixe de noms d'événements SDK. Les événements se déclenchent selon votre configuration du module Events dans le panneau d'administration (l'événement doit avoir l'option WebSocket activée). Vous écoutez un événement par son marqueur avec socket.on('<event_marker>', callback).
La charge utile dépend de la source de l'événement. Champs de charge utile typiques (voir connect() pour des exemples complets) :
| Champ de charge utile | Arrive pour | Contient |
|---|---|---|
attributes | Chaque événement | Les propres attributs de l'événement |
product | Événements de catalogue (produit) | Attributs du produit plus title |
user | Événements de formulaire utilisateur | Champs du formulaire utilisateur |
order | Événements de commande | id de la commande et attributs |
email / code | Formulaires d'inscription / de code | Champs supplémentaires du formulaire |
📋 Ce que vous devez savoir
L'autorisation est requise
connect() nécessite un utilisateur autorisé — appelez AuthProvider.auth(...) avant de vous connecter. La connexion est authentifiée avec le jeton d'accès de l'utilisateur plus votre jeton d'application de defineOneEntry(). Si aucun utilisateur n'est autorisé, le SDK enregistre une erreur.
connect() est synchrone
connect() renvoie immédiatement un Socket de socket.io — ne l'attendez pas. Attendez l'événement connect avant de vous fier au socket, puis attachez des gestionnaires avec socket.on(...).
socket.io est chargé à la demande
socket.io-client (~41 kB) est importé la première fois que connect() est appelé, donc les projets qui n'ouvrent jamais de socket ne l'incluent pas — voir Taille du bundle & Formats de module.
La signature reste inchangée et l'utilisation normale n'est pas affectée : jusqu'à ce que le morceau soit résolu, l'objet renvoyé met en file d'attente tout ce que vous faites avec (on, emit, disconnect) et le rejoue sur le vrai socket dans le même tick où il est créé — avant que la connexion puisse livrer quoi que ce soit — donc aucun événement n'est perdu. Lire l'état tôt est également précis : un socket fraîchement créé n'est pas connecté non plus, donc id est undefined et connected est false.
La seule différence : une méthode qui doit retourner une valeur (par exemple listeners()) ne peut pas répondre avant que le morceau arrive, et les objets imbriqués tels que socket.io ne sont accessibles qu'une fois qu'il est chargé.
Abonnez-vous après l'ouverture de la connexion, nettoyez lorsque c'est fait
Attachez des gestionnaires d'événements après que l'événement connect se soit déclenché, et détachez-les (socket.off) plus appelez socket.disconnect() lorsque la connexion n'est plus nécessaire (par exemple lors du démontage du composant ou de la déconnexion de l'utilisateur) pour éviter les fuites de mémoire dans les SPA.
Reconnexion
socket.io se reconnecte automatiquement par défaut. Pour personnaliser, écoutez les événements disconnect et connect_error et reconnectez-vous avec un retour exponentiel, en réinitialisant le délai lors d'une connect réussie.
📊 Tableau de référence rapide
| Méthode | Description | Cas d'utilisation |
|---|---|---|
| connect() 🔐 | Connectez-vous au serveur WebSocket | Établir la connexion |
🔐
connect()nécessite un utilisateur autorisé — authentifiez-vous d'abord via AuthProvider. Après la connexion, attachez des gestionnaires d'événements avecsocket.on(...).
❓ Questions fréquentes (FAQ)
Comment puis-je me connecter au serveur WebSocket ?
Utilisez WS.connect() pour ouvrir une connexion — elle est synchrone et renvoie un Socket de socket.io. Elle nécessite un utilisateur autorisé, donc appelez d'abord AuthProvider.auth(...). Attendez l'événement connect avant de vous fier au socket, puis attachez des gestionnaires avec socket.on('<event_marker>', callback).
À quels événements puis-je m'abonner ?
Il n'y a pas de liste fixe d'événements SDK. Les événements sont définis par votre configuration du module Events dans le panneau d'administration (avec l'option WebSocket activée), et vous écoutez un événement par son marqueur avec socket.on('<event_marker>', callback). Voir connect() pour des exemples de charge utile (produit, utilisateur, commande, formulaire).
Comment gérer les interruptions de connexion ?
socket.io se reconnecte automatiquement par défaut. Pour personnaliser, écoutez les événements disconnect et connect_error et reconnectez-vous avec un retour exponentiel (par exemple, 1s, 2s, 4s, 8s, jusqu'à un maximum), en réinitialisant le compteur de délai lors d'une connect réussie.
Comment éviter les fuites de mémoire avec les abonnements WebSocket ?
Détachez les gestionnaires d'événements (socket.off) et appelez socket.disconnect() lorsque les composants se démontent ou que la connexion n'est plus nécessaire. Dans React, faites cela dans le nettoyage de useEffect ; dans Vue, dans beforeUnmount.
🎓 Meilleures pratiques
- Authentifiez-vous d'abord -
connect()nécessite un utilisateur autorisé. - N'attendez pas connect() - C'est synchrone et renvoie un
Socket. - Abonnez-vous après l'ouverture de la connexion - Attachez des gestionnaires après que l'événement
connectse soit déclenché. - Nettoyez - Détachez les gestionnaires (
socket.off) etsocket.disconnect()pour éviter les fuites de mémoire dans les SPA. - Gérez la reconnexion - socket.io se reconnecte automatiquement ; personnalisez avec
disconnect/connect_erroret retour si nécessaire. - Validez les charges utiles des événements - La forme de la charge utile dépend de la source de l'événement ; vérifiez les champs avant de les utiliser.
🔗 Documentation connexe
- Module AuthProvider - Autorisez l'utilisateur avant de vous connecter
- Module Orders - Événements de commande pour le suivi des commandes en temps réel
- Module Users - Événements utilisateur pour les notifications d'inscription
- API WebSocket