Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
104
rated 0 times [  108] [ 4]  / answers: 1 / hits: 16353  / 9 Years ago, sat, october 24, 2015, 12:00:00

I am building a simple login system using node.js and its socket.io module.
I am done with the authentication part, i.e., using MongoDB, I can now ascertain whether the user attempting to log in is genuine or fake.
At this stage, when I find a genuine login, I need to redirect the client to a different page (index.html). However, because a request is not sent and a response is not expected with a socket.io event, I cannot use
response.setHeader(...);
because there is no 'response' parameter in my callback function. Here is my code:



On client side:



<script src=/socket.io/socket.io.js></script>
<script src=http://code.jquery.com/jquery-1.11.1.js></script>
<script>
var socket=io();
$('form').submit(function(){
var un=$('#un').val();
var pw=$('#pw').val();
socket.emit('login',un,pw);
return false;
});
</script>


and on the server end,



var app=require('express')();
var server=require('http').Server(app);
var io=socket(server);
io.on('connection',function(client){
client.on('login',function(username,pw){
//if authenticated, direct the client to index.html
});
});


Can anyone please suggest any method to do this?


More From » node.js

 Answers
19

One way of accomplishing this is emitting a redirect event to your client, and handling the redirect on their end.



Server-side:



var destination = '/index.html';
client.emit('redirect', destination);


Client-side:



server.on('redirect', function(destination) {
window.location.href = destination;
});

[#64614] Thursday, October 22, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
andreasn

Total Points: 238
Total Questions: 107
Total Answers: 111

Location: Ghana
Member since Sun, Mar 27, 2022
2 Years ago
;