Node.js 具有会话处理的套接字。在Post方法上创建会话。已设置服务器端值。但向客户端发送需要刷新
我已经在post方法上创建了一个会话变量。值是在服务器端设置的Node.js 具有会话处理的套接字。在Post方法上创建会话。已设置服务器端值。但向客户端发送需要刷新,node.js,sockets,session,Node.js,Sockets,Session,我已经在post方法上创建了一个会话变量。值是在服务器端设置的 var sess; app.post('/loginn', function(req,res){ sess=req.session; sess.email=req.body.email; console.log("sess.email"); // value is set here io.emit("socket email",{email: sess.email}); // To access the session
var sess;
app.post('/loginn', function(req,res){
sess=req.session;
sess.email=req.body.email;
console.log("sess.email"); // value is set here
io.emit("socket email",{email: sess.email}); // To access the session in client i tried emit on post but its not accessible
res.json({id : req.body.socket, user : req.body.email, message : "done" });
});
我在访问url时使用了会话变量
通过以下代码
app.get('/notification', function(req,res){
sess=req.session;
console.log(sess);
console.log("sess id "+sess.email);
var some_date="2313232432232";
if(sess.email){
io.emit("socket email",{email: sess.email});
connection.query('select * from mdl_mobile_user where mob_email="'+sess.email+'"', function(error,rows){
if(error){
console.log("Error"+error);
}
else{
if(rows.length==0){
connection.query('insert into mdl_mobile_user (mob_email,timejoin) values ("'+sess.email+'","'+some_date+'")',function(error,results){
if(error){
console.log("Error"+error);
}
else{
console.log("User saved in db");
}
});
}
else{
console.log("This user already enrolled in mobile");
}
}
})
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(notification);
}
else{
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(index);
}
});
通过这样做,在服务器端可以很好地设置值,但在post上,这些值不会在客户端设置。在帖子中,我重定向到通知页面
$("#submit").click(function(){
email=$("#email").val();
pass=$("#password").val();
/*
* Perform some validation here.
*/
$.post("http://10.21.1.50:3001/loginn",{email:email,pass:pass,socket:socket.id},function(data){
console.log(data.message);
if(data.message==='done')
{
window.location.href="/notification";
}
});
});
首先,我没有从服务器获取值。但是当我刷新页面时。我得到了价值。同样的情况也发生在我身上。在这个通知页面上,我想显示他/她正在等待的所有消息,这对我有用。但是只有当我刷新页面好几次时才会发生这种情况
这是我通过服务器代码执行的
socket.on("message check",function(req,res){
console.log("Email from user"+req.res_email);
connection.query("select mdl_mobile_user.mob_email,mdl_mobile_notification.mob_message,mdl_mobile_notification.notification,mdl_mobile_notification.id from mdl_mobile_user join mdl_mobile_notification on mdl_mobile_user.id=mdl_mobile_notification.mob_user_id where mdl_mobile_user.mob_email='"+req.res_email+"' and mdl_mobile_notification.notification=0", function(error,rows){
if(error){
console.log("Error"+error);
}else {
if(rows.length!=0){
console.log(rows);
var message_json=JSON.stringify(rows);
var message_parse=JSON.parse(message_json);
for(var i=0;i<message_parse.length;i++){
console.log(message_parse[i].id+"says"+message_parse[i].mob_message);
io.emit('post notification message', {message_id: message_parse[i].id, message_content: message_parse[i].mob_message});
}
//socket.emit('post notifiation message' , {id : user_id, message : server_msg});
}else{
console.log("No messages found");
}
}
});
socket.on('post notification message', function(res){
console.log(res);
addMessage(res.message_id,res.message_content);
socket.emit("change notification status", {id : res.message_id});
});