【问题标题】:How to redirect a client after a socket.io event?如何在 socket.io 事件后重定向客户端?
【发布时间】:2016-01-24 03:19:07
【问题描述】:

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

在客户端:

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

在服务器端,

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
    });
});

谁能建议任何方法来做到这一点?

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    实现此目的的一种方法是向您的客户端发出重定向事件,并在其端处理重定向。

    服务器端:

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

    客户端:

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

    【讨论】:

    • 是的,Max,我这样做是为了满足需求的最后手段。但是,我认为必须有更直接的方法,因为客户端的重定向似乎是一项非常基本的任务。
    • 我也在寻找这个,我想@kshubham07 正在寻找的是一种在 http 级别重定向的方法。正如我所看到的(我可能错了),一旦建立会话,这将不再可能,例如一个事件之后。但是,如果库允许,它应该可以在连接后立即进行。有人可以称重吗?
    • 好吧,我想会有一个 socket.redirect() 来完成这项工作。
    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2013-03-06
    • 2012-11-23
    • 2016-10-14
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多