Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在socket.io事件后重定向客户端?_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 如何在socket.io事件后重定向客户端?

Javascript 如何在socket.io事件后重定向客户端?,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在使用node.js及其socket.io模块构建一个简单的登录系统。 我已经完成了身份验证部分,即使用MongoDB,我现在可以确定尝试登录的用户是真是假。 在这个阶段,当我找到一个真正的登录名时,我需要将客户端重定向到另一个页面(index.html)。但是,由于socket.io事件不发送请求,也不需要响应,因此我无法使用 response.setHeader(…); 因为我的回调函数中没有“response”参数。这是我的密码: 在客户端: <script src="/sock

我正在使用node.js及其socket.io模块构建一个简单的登录系统。 我已经完成了身份验证部分,即使用MongoDB,我现在可以确定尝试登录的用户是真是假。 在这个阶段,当我找到一个真正的登录名时,我需要将客户端重定向到另一个页面(index.html)。但是,由于socket.io事件不发送请求,也不需要响应,因此我无法使用 response.setHeader(…); 因为我的回调函数中没有“response”参数。这是我的密码:

在客户端:

<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>

任何人都可以提出这样做的方法吗?

实现这一点的一种方法是向客户端发送重定向事件,并在客户端处理重定向

服务器端: 客户端:
是的,麦克斯,我这样做是为了满足需求。然而,我认为必须有一种更直接的方法,因为客户端重定向似乎是一项非常基本的任务。我也在寻找这种方法,@kshubham07寻找的是一种在http级别重定向的方法,我想。正如我所看到的(我可能错了),一旦会话建立,这就不可能了,例如在事件之后。不过,如果库允许的话,在连接之后就应该可以。有人能称一下体重吗?
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
    });
});
var destination = '/index.html';
client.emit('redirect', destination);
server.on('redirect', function(destination) {
    window.location.href = destination;
});