2014-04-14 39 views
0

我正在学习如何使用nodejs,我正在开发一个聊天页面,以我的经验从php,我知道nodejs几乎没有什么关于php的功能,所以我构建了整个结构,像重建PHP引擎,但只是在节点,现在我有会议的问题,因为我想做一个用户系统,所以即时登录,我很难找出做什么过程来做一个登录过程,如果用户存在,使会议,我有这样的代码在我的索引使用socket.io从客户transfering数据到服务器,反之亦然(IM仍然在学习它插座)在节点中管理会话

<!doctype html> 
<html> 
<head> 
    <title>Login - Chat</title> 

    <meta charset="UTF-8"> 

    <script type="text/javascript" src="/socket.io/socket.io.js"></script> 

    <link rel="stylesheet" type="text/css" href="css/main.css"> 
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> 
</head> 
<body> 
    <div class="container" id="page"> 

     <h2>Chat Login</h2> 

     <div id="login-form" class="well"> 
      <form method="post" accept-charset="UTF-8"> 
       <div class="form-group" method="post"> 
        <label for="Username">Username</label> 
        <input type="text" class="form-control" id="Username" name="Username" placeholder="Enter email"> 
       </div> 

       <div class="form-group"> 
        <label for="Password">Password</label> 
        <input type="password" class="form-control" id="Password" name="Password" placeholder="Password"> 
       </div> 

       <button type="submit" class="btn btn-default">Submit</button> 
      </form> 

     </div> 
    </div> 

    <script type="text/javascript"> 

    window.onload = init; 

    var socketio = io.connect(window.location.hostname); 

    function init() 
    { 
     var login = document.getElementById('login-form'); 

     login.onsubmit = requestData; 
    } 

    function requestData() 
    { 
     username = document.getElementById('Username'); 
     password = document.getElementById('Password'); 

     //alert if form is empty. 
     if((username.value && password.value) == '') 
     { 
      alert('Box has empty value.'); 

      return false; 
     } 

     else 
     { 
      socketio.emit('Login_user', {user: username.value, pass: password.value}); 
     } 
    } 

    </script> 
</body> 
</html> 

IM。我在这一步卡住了,我只需要知道如何处理nodejs中的会话,我已经得到了我的github存储库:Chat,所以你可以看到我的整个代码,任何想法如何处理会话?

PD:我只是一个新手开发者,我有6个月的时间使用PHP和2周的节点,我不想使用任何框架来更好地学习语言。

回答

1

我推荐使用Express.js作为节点框架。 Express已通过Connect框架提供支持。我使用这个通过Redis支持的会话存储来允许多服务器负载平衡。下面是app.js节点快车,连接工作的一个片段,如果你想:

var express = require('express') 
    , RedisStore = require('connect-redis')(express) 
    ; 

var app = express(); 

app.use(express.session({ 
    secret: 'some pass', 
    cookie: { 
    httpOnly: false, 
    secure: false, 
    maxAge:null, 
    domain:'.yourdomain.com' 
    }, 
    store: new RedisStore({ 
    ttl:1800, //30 min redis ttl 
    client:redis, 
    secret:'some pass' 
    }) 
})); 
+0

好,我正打算做这个会话和烹饪的东西,没有任何框架,这样我可以学习它是如何实现的,我会记住这个建议,并感谢你分享你的代码片段。 – nosthertus

+0

你有任何书籍或指导教程这个框架?我还在学习JavaScript,所以我这样做很慢 – nosthertus

+0

可悲的是没有真正的书,但它几乎是一个入门,一旦它到位,你都会手忙脚乱。这一个很好:http://expressjs-book.com/forums/topic/express-js-sessions-a-detailed-tutorial/ – Biba

0

由于您使用socket.io,我会建议通过session.socket.io模块读取。源代码是非常小的,可读性: