Socket.io : Obtenir Client id de session à tout moment
Je sais comment faire pour récupérer le client id de session lorsque l'utilisateur se connecte.
Mais j'aimerais le récupérer à tout moment, par exemple lorsque le client clique sur quelque chose, je voudrais être en mesure de savoir qui a cliqué, ce qui leur sessionID a été.
socket.sessionID
ne fonctionne pas, ni ne socket.handshake.sessionID
Par exemple :
J'ai cette voie expresse :
.get('/result/:survey', function(req, res) {
res.redirect('/result/'+req.params.survey+'/1');
})
Juste avant la redirection, j'aimerais que l'utilisateur joindre un socket de la salle, et également obtenir leur id de session. Comment pouvais-je le faire ? Selon le doc, il serait socket.join('room')
mais je doute socket
ne représente que la connexion que j'ai avec le client, et pas avec les autres clients. Peut-être que je suis juste avoir de la difficulté à comprendre les sockets !
- Une fois que vous rediriger vers une autre URL, la prise de connexion sera perdue (ils ne sont pas persistants chargement de la page) et votre client aura à se re-connecter (et d'obtenir un nouveau socket id).
- Ooooh bien. Mais leur
handshake.sessionID
devrait rester le même, droite ? - Semble que vous devriez être en utilisant un cookie pour stocker les
clientId
il est donc toujours unique par client handshake.sessionID
ne fait pas partie de lasocket.io
protocole, mais il est généralement défini à partir deio.set('authorization', ...)
par l'analyse des cookies de session. Si c'est ce que vous utilisez, il devrait rester le même, oui.
Vous devez vous connecter pour publier un commentaire.
À partir de la version 1.0, vous obtenez le client sessionid de cette façon:
Je ne suis pas sûr exactement ce que tu veux dire, parce que "lorsque le client clique sur quelque chose" suppose que vous entendez par "client-side" (où vous pouvez utiliser
socket.socket.sessionid
), mais "le stocker dans un tableau de clients" suppose vous entendez par "côté serveur" (où vous pouvez y accéder en tant quesocket.id
).Côté Client:
Côté serveur:
- Je stocker l'id client est à côté serveur gestionnaires d'événements simplement avec:
socket.io
point de prêter à confusion utilisesessionid
trop)Je suis à l'aide d'une douille.io version 2.0.4 et vous pouvez accéder à l'id du client à n'importe quel point dans le temps en utilisant
this.id
dans un gestionnaire. Par exemple:Apparemment la fonction de gestionnaire est exécuté dans la Prise contexte lui-même, de la même façon qui vous donnera accès à d'autres propriétés comme la
client
(Client connecté à un objet),request
(Demande en cours de l'objet en cours de traitement), etc. Vous pouvez voir l'intégralité de l'API ici https://socket.io/docs/server-api/#socket