Node.js 管理节点中的会话

Node.js 管理节点中的会话,node.js,session,Node.js,Session,我正在学习如何使用nodejs,我正在用我在php的经验开发一个聊天页面,我知道nodejs对php的功能几乎一无所知,所以我正在构建整个结构,比如重建php引擎,但只是在node中,现在我在会话方面遇到了问题,因为我想创建一个用户系统,所以我要登录,对于我来说,很难弄清楚为了创建一个登录过程应该做什么,如果用户存在,创建会话,我的索引中有这个代码 <!doctype html> <html> <head> <title>Login - C

我正在学习如何使用nodejs,我正在用我在php的经验开发一个聊天页面,我知道nodejs对php的功能几乎一无所知,所以我正在构建整个结构,比如重建php引擎,但只是在node中,现在我在会话方面遇到了问题,因为我想创建一个用户系统,所以我要登录,对于我来说,很难弄清楚为了创建一个登录过程应该做什么,如果用户存在,创建会话,我的索引中有这个代码

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

登录聊天
聊天登录
用户名
密码
提交
window.onload=init;
var socketio=io.connect(window.location.hostname);
函数init()
{
var login=document.getElementById('login-form');
login.onsubmit=requestData;
}
函数requestData()
{
username=document.getElementById('username');
password=document.getElementById('password');
//如果窗体为空,则发出警报。
if((username.value&&password.value)='')
{
警报('框中有空值');
返回false;
}
其他的
{
emit('Login_user',{user:username.value,pass:password.value});
}
}
我使用socket.io将数据从客户端传输到服务器和viceversa(我还在学习socket)。我被困在这一步中,我只需要知道如何在nodejs中处理会话,我有我的github存储库:所以你可以在那里看到我的全部代码,知道如何处理会话吗


PD:我只是一个新手开发人员,我有6个月的时间使用PHP,2个星期的时间使用node,我不想使用任何框架来更好地学习语言。

我建议使用Express.js作为node框架。Express通过Connect framework提供内置支持。我通过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'
  })
}));

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

  • (48行代码)

好吧,我本来打算在没有任何框架的情况下进行本次课程和烹饪,这样我就可以了解如何真正做到这一点,我将牢记这一建议,并感谢您分享您的片段。您有任何关于此框架的书籍或指南教程吗?。我也在学习javascript,所以我做得很慢,没有真正的书,但这几乎是一个偶然的机会,一旦它到位,你们都不用动手。这个很好: