带有express.session的Socket.io

时间:2017-01-29 14:04:02

标签: node.js sockets

我正在做的是注册用户并使用expressjs中的新userId创建会话。直到这一点,我做得对,它的工作原理。但我需要为我的io使用相同的会话变量。 客户端:

var userRegisterData={
                    url:baseURL+'userRegisterData',
                    dataServer:{
                            username: user.username,
                            useremail: user.useremail,
                            userpassword: user.userpassword
                    }
                }
               runAjax.runajax_function(userRegisterData,function(userData){
                    console.log(userData.process);
                });

socket.on('getMyData', function(data){
    $scope.userData = data;
    console.log($scope.userData);
});

服务器端: ExpressJs

app.post('/userRegisterData', function(req, res) {
    //db activities
    session.userId = result.userId;
    //so here i set the session variable from db
});
io.on('connection', function(socket) {
  //db activities using session.userId (I need the session.userId for db purpose)
  socket.emit('getMyData', result);
});

现在,当我第一次启动服务器时,我收到userId is undefinedio.on的错误

我能理解io.on正在app.post之前执行。我是表达js和socket.io的新手,我尝试使用if,这解决了我第一次启动服务器时没有出现任何错误的问题,但它再也不能用作io.on范围已经被处决了。

我需要实现的是,如果会话变量在快速会话中不存在,那么让io.on不做任何事情,当会话变量可用时,只有它触发。

0 个答案:

没有答案