Je sais que c'est un peu vieux, mais pour les futurs lecteurs, en plus de l'approche consistant à analyser les cookies et à récupérer la session à partir du stockage (ex. passeport.socketio ), vous pouvez également envisager une approche basée sur les jetons.
Dans cet exemple, j'utilise des jetons Web JSON qui sont assez standard. Vous devez donner le jeton à la page client, dans cet exemple imaginez un endpoint d'authentification qui renvoie JWT :
var jwt = require('jsonwebtoken');
// other requires
app.post('/login', function (req, res) {
// TODO: validate the actual user user
var profile = {
first_name: 'John',
last_name: 'Doe',
email: 'john@doe.com',
id: 123
};
// we are sending the profile in the token
var token = jwt.sign(profile, jwtSecret, { expiresInMinutes: 60*5 });
res.json({token: token});
});
Maintenant, votre serveur socket.io peut être configuré comme suit :
var socketioJwt = require('socketio-jwt');
var sio = socketIo.listen(server);
sio.set('authorization', socketioJwt.authorize({
secret: jwtSecret,
handshake: true
}));
sio.sockets
.on('connection', function (socket) {
console.log(socket.handshake.decoded_token.email, 'has joined');
//socket.on('event');
});
L'intergiciel socket.io-jwt s'attend à ce que le jeton soit inclus dans une chaîne de requête, de sorte que le client n'a qu'à le joindre au moment de la connexion :
var socket = io.connect('', {
query: 'token=' + token
});
J'ai écrit une explication plus détaillée sur cette méthode et les cookies. aquí .