Meteor 临时游戏室的松散用户创建(没有帐户,没有密码)

Meteor 临时游戏室的松散用户创建(没有帐户,没有密码),meteor,meteor-blaze,meteor-accounts,Meteor,Meteor Blaze,Meteor Accounts,我正在尝试创建一个简单的游戏,游戏结束后,生成游戏会话的房间并将其销毁。我想让用户加入这个房间,只需输入一个昵称就可以玩这个游戏 我是否需要使用meteor用户帐户,或者是否有更简单的方法,因为我不需要任何身份验证或密码 我正在考虑创建一个玩家集合,并在他们点击加入房间时插入昵称,但我不知道如何跟踪“我是谁”,或者在他们失去联系而不得不重新加入时跟踪他们 但是,如果我要使用用户帐户,我不知道如何定制它,以便轻松创建临时/松散的用户,并在游戏会话后在没有任何密码或电子邮件等的情况下将其销毁 提前谢

我正在尝试创建一个简单的游戏,游戏结束后,生成游戏会话的房间并将其销毁。我想让用户加入这个房间,只需输入一个昵称就可以玩这个游戏

我是否需要使用meteor用户帐户,或者是否有更简单的方法,因为我不需要任何身份验证或密码

我正在考虑创建一个玩家集合,并在他们点击加入房间时插入昵称,但我不知道如何跟踪“我是谁”,或者在他们失去联系而不得不重新加入时跟踪他们

但是,如果我要使用用户帐户,我不知道如何定制它,以便轻松创建临时/松散的用户,并在游戏会话后在没有任何密码或电子邮件等的情况下将其销毁


提前谢谢

您可以只使用一个集合,但正如您所说,您仍然需要跟踪用户的id,因此这需要一些努力

就个人而言,我会使用Meteor帐户系统,使用帐户令牌包:

您可以在服务器上生成令牌,然后让用户登录。他们不需要知道自己已登录


使用Meteor的帐户系统在跟踪用户方面有很多优势,如果在以后的阶段您确实希望人们使用帐户密码、facebook帐户等登录,则无需重新构建您的应用程序。

您无需使用Meteor的帐户系统

只需创建一个
Rooms
集合,集合中的每个文档都将成为每个“游戏室”,或者您想如何称呼它。然后在里面,添加一个“玩家”键并存储所有玩家或您需要的任何东西(
$pull
退出游戏的玩家,
$push
加入游戏的玩家)。游戏结束后,您可以通过其_id字段完全删除该MongoDB文档

比如:

    db.rooms = {
    _id: xzu90udfmd,
    players: [
    {
    tempUsername: "username1",
    tempWhatever: "whatever",
    token: 3zz97hrnw
    }, {
    tempUsername: "username2",
    tempWhatever: "whatever",
    token: 3zz97hrnw
    }, {
    tempUsername: "username3",
    tempWhatever: "whatever",
    token: 3zz97hrnw
    }
    ]
    };

然后,您可以在单个用户对象中添加所有自定义项,也可以在整个游戏室之外添加所有自定义项。使用React进行类似操作将非常简单。

如果用户刷新页面,是否需要保留会话?@Khang是的,我需要保留会话,因为我发现有时由于连接问题等原因,用户可能需要刷新页面。我认为不必使用用户帐户。我将拥有一个
Players
集合,为每个新连接的浏览器创建一个新的player文档,并通过
localStorage
将该播放器的
\u id
存储在浏览器中,但如果他断开连接,我如何跟踪他,等等?@khang是否建议将其_id或令牌保存在本地存储中?如果此人失去连接,您是否仍希望他能够连接回同一房间?是的,您可以将其令牌保存在本地存储中,在模板呈现之前加载,并与数据库中的
players
数组交叉引用。如果玩家令牌匹配(localstorage/cookie令牌匹配数据库中的用户令牌)&&游戏室状态未被删除/完成,则渲染游戏室。如果没有,则渲染一个“游戏结束”模板或您想要的w/e。