Cycle de Vie
Contrairement à une requête HTTP qui est éphémère (Requête -> Réponse -> Bye), une connexion WebSocket est persistante. Il est souvent crucial de savoir quand un utilisateur arrive ou part.
@SubscribeConnection()
Cette méthode est appelée automatiquement dès qu'un socket se connecte au Namespace de la Gateway.
C'est l'endroit idéal pour :
- Vérifier un token d'auth (via
socket.handshake.auth). - Marquer l'utilisateur comme "En ligne" dans ta BDD.
- Le faire rejoindre une "Room" spécifique.
import { SubscribeConnection } from 'my-fastify-decorators';
@WebSocketGateway('/chat')
export class ChatGateway {
@SubscribeConnection()
handleConnection(socket: Socket) {
console.log(`Nouvel arrivant : ${socket.id}`);
// Ex: socket.join('room-1');
}
}
@SubscribeDisconnection()
Appelé quand le socket coupe la connexion (fermeture d'onglet, perte de réseau...).
import { SubscribeDisconnection } from 'my-fastify-decorators';
@WebSocketGateway('/chat')
export class ChatGateway {
@SubscribeDisconnection()
handleDisconnect(socket: Socket) {
console.log(`Départ de : ${socket.id}`);
// Ex: userService.setUserOffline(...)
}
}