在节点中管理会话

时间:2014-04-14 21:59:06

标签: node.js session

我正在学习如何使用nodejs,我正在用PHP的经验开发一个聊天页面,我知道nodejs几乎没有关于php的功能,所以我正在构建整个结构,比如重建php引擎,但只是在节点,因为我现在有会话问题,因为我想建立一个用户系统,所以即时登录,我很难弄清楚要做什么过程来进行登录过程,如果用户存在,进行会话,我的索引中有这个代码

<!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>

我正在使用socket.io将数据从客户端传输到服务器而反之亦然(我还在学习它的套接字)。我在这一步中遇到了困难,我只需要知道如何处理nodejs中的会话,我已经有了我的github存储库:Chat所以你可以看到我的整个代码,任何想法如何处理会话?

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

2 个答案:

答案 0 :(得分:1)

我建议使用Express.js作为节点框架。 Express已通过Connect框架内置支持。我通过Redis支持的会话存储使用它来允许多服务器负载平衡。如果您需要,这是app.js中node-express-connect工作的片段:

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'
  })
}));

答案 1 :(得分:0)

由于你使用的是socket.io,我建议你阅读session.socket.io模块。源代码非常小且可读: