Express – socket.io – 会话。 将用户标识作为套接字标识

我正在使用express-socket.io会话 。 我想我可以通过查看教程来设置基本configuration:

//BASIC CONFIG? var clients = []; var session = require("express-session")({ secret: 'some key', resave: true, saveUninitialized: true }); var sharedsession = require("express-socket.io-session"); app.use(session); io.use(function(socket, next){ next(); }); io.use(sharedsession(session, { autoSave:true })); io.on('connection', function(socket) { console.log("CLIENT CONNECTED"); var session = socket.handshake.session; clients.push(socket); socket.on('disconnect', function() { console.log("CLIENT DISCONNECTED"); }); }); 

我现在想要做的就是引用特定的客户端套接字,而不是由套接字引用,而是由应该分配给该套接字的会话标识引用。 当用户login时发生这种情况:

 req.session.user_id = user_id; //(user_id is equal to DB {0,1,2,3...} ids 

当我这样做时,我能够将套接字发送给特定的客户端:

 clients[0].emit("to_do",info); // I don't know who is client index 0 compared to the login reference... 

我希望能够做到这一点或类似:

 user_id = 3; // which would have a socket assigned clients(user_id).emit("to_do",info); 

这将意味着每个客户端将有一个套接字分配给其以前分配的ID。 我怎么能这样做,所以我可以通过该ID指定套接字? 我没有经历过所有这一切,所以很抱歉有什么大错误。 谢谢

       

网上收集的解决方案 "Express – socket.io – 会话。 将用户标识作为套接字标识"