Meteor\u lastSessionId对于同一选项卡总是不同的
我正在经历一件有点奇怪的事情,我无法理解它的头绪。。。我使用Meteor将sessionId从客户端发送到服务器,但是每次刷新页面时,我得到的sessionId都不一样,这不应该是,对吗 客户端Meteor\u lastSessionId对于同一选项卡总是不同的,session,meteor,Session,Meteor,我正在经历一件有点奇怪的事情,我无法理解它的头绪。。。我使用Meteor将sessionId从客户端发送到服务器,但是每次刷新页面时,我得到的sessionId都不一样,这不应该是,对吗 客户端 Meteor.call('logSession', Meteor.default_connection._lastSessionId); 服务器 Meteor.methods({ logSession: function(sid) { console.log(sid);
Meteor.call('logSession', Meteor.default_connection._lastSessionId);
服务器
Meteor.methods({
logSession: function(sid) {
console.log(sid);
}
})
sid总是不同的原因是什么
谢谢 为客户端和服务器之间的每个websocket会话创建
\u lastSessionId
。它在服务器端表示websocket的会话和状态,而不是cookie或持久性的东西
刷新/打开其他选项卡时,将创建一个新的websocket,这就是会话id不同的原因
每个会话ID表示客户端在服务器上的数据状态。这意味着服务器根据订阅情况“知道”客户端在每个会话上有哪些数据,以便知道要发送什么&如果某个特定选项卡发生更改,则要更改什么
刷新页面时,您使用的是新状态,因此Meteor不会尝试使用以前的会话id重新连接并恢复以前的状态,因为在订阅方面不需要恢复以前的状态,因为用户希望页面是新的
如果您想使用cookie等选项卡上提供的某种形式的持久性,请改用localStorage
:
localStorage.setItem("foo", "bar");
console.log( localStorage.getItem("foo") );
=> "bar"
谢谢你的解释!