nodejs(express)with socketio

时间:2013-03-20 05:12:55

标签: node.js socket.io

在我的应用程序中,我正在使用socketio和nodejs。我正在尝试实现简单的身份验证。如果用户被授权,我必须重定向到我的应用程序,否则我必须重定向到同一页面。我实现的示例代码是

<script>
     $(function(){    
        $('#join').click( function() {   
            var uname = $('#uname').val();
            alert(uname);
            socket.emit('news', uname);                             
            var pwd = $('#pwd').val();    
            socket.emit('pass', pwd);
        });
        });
</script>

服务器代码是..

app.get('/', function(req, res){
      if(auth)
      {
          res.sendfile(__dirname + '/home.html');
      }
      else
      {
      res.send("hello user");
      }
});
io.sockets.on('connection', function(socket){   
      var uname;
      var pwd;    
    socket.on('news', function(data){       
    uname=data;
    console.log("the information i got is" + uname);
    });
    socket.on('pass', function(data){
    pwd=data;
    console.log("the information i got is" + pwd);      
    if ( uname==123 && pwd ==321)
    {
    auth=true;
    console.log("AUTHENTICATED USER");
    }
    });
    socket.on('disconnect', function(data){          
    });    
});

在控制台上我得到了这个

the information i got is123
the information i got is321
AUTHENTICATED USER

但我面临的问题是,如果用户授权它没有重定向到另一个页面

1 个答案:

答案 0 :(得分:1)

尝试将url发送到客户端,让客户端浏览器处理重定向...

这个怎么样?

客户端:

 $(function(){    
        $('#join').click( function() {   
            var uname = $('#uname').val();
            alert(uname);
            socket.emit('news', uname);                             
            var pwd = $('#pwd').val();    
            socket.emit('pass', pwd);
            socket.on('url', function (data) {
            window.location.href=data;    
  });
        });
        });

服务器:

app.get('/', function(req, res){
      if(auth)
      {
          socket.emit('url', { msg: 'homePage' });  
      }
      else
      {
             socket.emit('url', { msg: 'hiPage' }); 
      }
});

注意:这只是一个示例代码,而不是可执行代码。