如何在socket io中存储会话特定信息?
var client={}; //is this static across all sockets (or connected clients) that are connected?
io.on('connection', function(socket){
client.connectiontime=Date.now();
});
//on another io.on('connection') for the same connected client
io.on('connection', function(socket){
store(client.connectiontime);
}
如果将客户端变量视为静态,如何仅将此变量用于与当前连接的客户端相关的操作?
感谢。
答案 0 :(得分:2)
首先,每个套接字都有一个可用于引用它的名称,但每次同一个客户端连接时都会更改,因此如果它应该在客户端离开后保留,则无效。如果你的目标是在某个地方存储连接时间(数据库?),那么你必须从客户端获得一个唯一的标识符,可以用来再次找到它们,类似于登录。然后,您将日期对象传递给处理存储该时间的函数。
您应该注意,“连接”仅在套接字第一次连接时调用。连接不是您通常在客户端执行某些操作时使用的事件,除非它们在每次访问服务器程序之间断开连接。
如果您确定只想使用Client对象,则可能必须创建一个客户端数组,并使用套接字ID作为密钥以便稍后访问该对象。然后你会有像
这样的东西array [socket.id] .connectiontime = Date.now()
var client={}; //is this static across all sockets (or connected clients) that are connected?
var clients = [];
io.on('connection', function(socket){
clients[] = {
id : socket.id
connectiontime : Date.now()
}
});
//on another io.on('connection') for the same connected client
io.on('connection', function(socket){
// Here you would search for the object by socket.id and then store
store(client.connectiontime);
}