我正在学习如何使用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周的节点,我不想使用任何框架来更好地学习语言。答案 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模块。源代码非常小且可读: