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?
You can try the code below:io.to(socket.id). emit("event", data); whenever a user joined to the server, socket details will be generated including ID. This is the ID really helps to send a message to particular people.
Socket disconnects automatically, reconnects, and disconnects again and form a loop. #918.
path Default value: /socket.io/ It is the name of the path that is captured on the server side.
One way of accomplishing this is emitting a redirect event to your client, and handling the redirect on their end.
var destination = '/index.html';
client.emit('redirect', destination);
server.on('redirect', function(destination) {
window.location.href = destination;
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With