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