有没有办法区分房间领导



当用户创建一个房间时,该用户是否被赋予某种标识符,可用于在房间内为他们提供特殊/单独的功能?

我特别想到了一个跟随领导者类型的场景,其中房间创建者是唯一可以影响页面的人。

(我认为这可以通过正式的用户身份验证轻松完成,但我很好奇开箱即用会发生什么。

目前无法确定哪个用户首先加入聊天室。目前,执行此操作的唯一方法是使用 JWT 来标识哪些用户是其组的领导者或追随者。

然后,您可以利用我们的ACL来确保只有领导者可以修改某些数据。要检索用户组,您可以在相关用户密钥上调用 get 以显示应用程序内的相应视图。

在我们的路线图上,能够从 ACL 中的键中读取组和用户信息,这意味着当用户加入房间时,他们可以执行覆盖 false 的集合。如果没有其他用户设置密钥,他们将自动成为该组的成员。

如果您不担心正确的用户身份验证,则可以通过利用设置覆盖来确定用户。下面是一个示例:

var leaderKey = room.key('leader');
function acquireLeader (cb) {
  leaderKey.set(user.id, { overwrite: false, cascade: room.self() }, function (err) {
    if (err instanceof goinstant.errors.CollisionError) {
      return cb(null, false); // someone else is the leader
    } else if (err) {
      return cb(err); // something else went wrong
    }
    cb(null, true);
  });
}
room.join(function(err) {
  if (err) {
    throw err;
  }
  acquireLeader(function(err, isLeader) {
    if (err) {
      throw err;
    }
    console.log('are you the leader?', isLeader);

    leaderKey.on('remove', function (value, context) {
      acquireLeader(function(err, isLeader) {
        console.log('did you acquire leader?', isLeader);
      });
    });
  });
});

上述杠杆设置了覆盖和密钥级联,以确保当用户加入房间时,他们试图成为领导者。如果他们的键没有值,则其用户标识存储在领导键中。如果键已经有值,那么其他人就是领导者。

当用户离开房间时,领导键将被删除,然后可以再次进行领导选举。这意味着某人将永远是领导者!

相关内容

  • 没有找到相关文章

最新更新