3

我对此很陌生,我正在构建一个用户需要登录并可以相互交互的游戏,或者其他当前登录用户的子集。

我最初的想法是,在他们登录后,将他们/他们的 websocket 客户端 ID 添加到当前登录用户的数组中,并让我操作它来知道谁登录或未登录。

这是做这种事情的正常方式吗?

谢谢!

4

2 回答 2

4

取决于你对“正常”的定义。;-)

通常,您使用的服务器将提供一些机制来管理“用户状态”,包括用户是否已登录到您的应用程序。

例如,Node 的“express”库(以及 express 使用“underneath”的“connect”)为此目的提供了一个 req.session 对象,因此您可以执行以下操作:

// user login via POST
//   assumes we're posting two values: username and password
//   as urlencoded data

app.post('/login',function(req,res){

  var username=req.body['username']||'',
      password=req.body['password']||'';

  // check post data (username,password) 
  // against list of allowed users

  if(isAuthorized(username,password)) { // you provide isAuthorized()
    req.session.authorized=true;
  }
  else {
    // display an error message to user
    // and redirect back to the login form
  }
});

// user logout via GET
app.get('/logout',function(req.res){
  req.session.destroy();
});

然后,当您想向用户提供受保护的页面时,首先检查 req.session.authorized 是否为真,如果不是,则重定向到登录表单。

有关更多信息,请参见http://expressjs.com/guide.html的文档

于 2011-05-10T21:46:27.970 回答
1

刚刚在这里找到了最终解决方案:http ://www.danielbaulig.de/socket-ioexpress/

它解释了如何在 express 或 node.js 中使用会话。并且您可以使用 redisStore 进行持久会话(当您每分钟重新启动服务器 3 次时非常理想:))

于 2012-01-04T12:55:00.460 回答