【发布时间】:2016-11-05 09:37:39
【问题描述】:
我正在使用express-socket.io-session。我想我可以通过查看教程来设置基本配置:
//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");
});
});
我现在想要做的是不是通过套接字而是通过应该分配给该套接字的会话 ID 来引用特定的客户端套接字。当用户登录时会发生这种情况:
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 指定套接字?我对所有这一切都没有经验,因此对任何重大错误感到抱歉。谢谢
【问题讨论】:
-
你可以像
var session_id = socket.handshake.session.id这样获取会话ID(你需要把它放在你的io.on('connection....)方法中。 -
@DavidR 但我可以根据需要指定用户吗?这样我就可以按照我想要的方式指定套接字,我是否必须在他登录时将 user_id 添加到套接字方法中,然后每次我想向特定用户发送信息时检查哪个对象具有正确的 user_id 并使用套接字与其关联的 id 以发出它?
标签: javascript node.js sockets session socket.io