Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 具有会话处理的套接字。在Post方法上创建会话。已设置服务器端值。但向客户端发送需要刷新_Node.js_Sockets_Session - Fatal编程技术网

Node.js 具有会话处理的套接字。在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

我已经在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 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});
                            });