2016-11-26 2 views
0

Je souhaite envoyer l'événement de déconnexion manuellement avec le paramètre personnalisé au serveur socket.io. J'utilise cette fonction mais ne fonctionne pas:Socket.io envoie l'événement de déconnexion avec le paramètre

// client

var userId = 23; 
socket.disconnect(user); 

// serveur

socket.on('disconnect', function (data) { 
     console.log('DISCONNECT: '+ data) 
    }) 

Maintenant, comment puis-je envoyer des données supplémentaires au serveur lors de l'événement de déconnexion envoyé?

Répondre

4

L'événement de déconnexion de l'E/S de socket est déclenché en interne, mais vous pouvez émettre un événement personnalisé lorsqu'il est appelé.

Vous devez d'abord écouter l'événement de déconnexion. Une fois que cet événement a été appelé, vous devriez alors émettre votre propre événement personnalisé, disons que nous l'appelons myCustomEvent Une fois que cet événement a été appelé, votre client devrait alors écouter votre myCustomEvent et en l'écoutant, devrait alors sortir les données que vous lui avez transmises . Par exemple:

io.sockets.on('connection', function (socket) { 
    const _id = socket.id 
    console.log('Socket Connected: ' + _id) 
    // Here we emit our custom event 
    socket.on('disconnect',() => { 
    io.emit('myCustomEvent', {customEvent: 'Custom Message'}) 
    console.log('Socket disconnected: ' + _id) 
    }) 
}) 

Votre client serait alors écouter myCustomEvent comme si

socket.on('myCustomEvent', (data) => { 
    console.log(data) 
}) 

J'espère que cette aide :)

+0

Mais si le client a envoyé un événement de déconnexion déjà, ce qui est la garantie que il va écouter myCustomEvent? Cela signifie qu'il n'est pas déconnecté non? – yaswanth

+0

L'événement personnalisé sera le dernier événement émis avant qu'il ne part et tout autre socket restant connecté entendra cet événement – Jackthomson