有没有办法阻止用户在两个标签页或浏览器中打开Meteor网站?
我正在尝试在Meteor中创建一个纸牌游戏,我想"赶上"如果用户试图在另一个标签页或浏览器中打开该页面,并警告他已经打开了另一个客户端实例,并且可能给他/她选择在所有实例中注销等等。
我已经用Google搜索了,但没有运气。
答案 0 :(得分:5)
如果要求用户登录:
Connections
集合的连接以及用户ID。 (或者配置文件本身的roomId,具体取决于您的架构)Connections
集合如果用户不必登录:
Connections
集合(以及用户IP)Connections
集合在野外使用onConnection的示例(请注意,我不允许多个连接,但这只是另外5行代码):https://github.com/mattkrick/react-tac-toe/blob/master/server/gameState.jsx#L13
文档(即如何捕获IP地址):http://docs.meteor.com/#/full/meteor_onconnection
答案 1 :(得分:1)
这是一个非常方便的程序包,用于跟踪设备间的IP地址和会话:mizzao:user-status。这为用户的文档(您需要发布到客户端)添加了一个密钥,详细说明了他们的连接,无论它们是否处于活动状态,IP地址,甚至是用户代理。您甚至可以观察此键的更改,以便从第一个会话中检测到用户还连接了第二个会话,反之亦然。
答案 2 :(得分:0)
正如MichelFloyd在上面的聊天中所说的那样。我按照他的指示尝试了下面的内容。
使用
添加包$ meteor add mizzao:user-status
<强>代码:强>
Accounts.onLogin(function(user){
UserStatus.events.on("connectionLogin", function(fields) {
$count = UserStatus.connections.find({userId : fields.userId}).count();
console.log('Total log ins : ' + $count);
});
});
您可以follow here查看已解决的整个方案。