最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to redirect a client after a socket.io event? - Stack Overflow

programmeradmin6浏览0评论

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=".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?

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./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?

Share Improve this question asked Oct 24, 2015 at 18:28 kshubham07kshubham07 3911 gold badge6 silver badges16 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 14

One way of acplishing 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;
});
发布评论

评论列表(0)

  1. 暂无评论