繁体   English   中英

快速发送新的HTML页面而无需重定向

[英]Express send new HTML page without redirect

我目前有一个登录页面,其中包含node.js + express + socket.io。 有没有一种方法可以在不重定向客户端的情况下向客户端发送新的HTML页面? (即留在www.dns.com和www.dns.con / home上)。 我尝试使用res.sendFile,但是客户端看不到接受新的HTML文件。

当前代码

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html'); //sets initial HTML page
});

io.on('connection', function (socket) {
    socket.on('login', function (username) {
        if (username === 'user')
        {
            console.log("Login Sucessful");
            app.get('/', function (req, res) { 
                res.sendFile(__dirname + '/main.html'); //doesn't change HTML page
            });
        }
    });
});

http.listen(80, function () {
    console.log('listening on port 80');
});

通过运行

app.get('/', function (req, res) { 
    res.sendFile(__dirname + '/main.html'); //doesn't change HTML page
});

在那里面,如果您只是为将来的请求添加了另一条路线,那不是您想要的。 在其他许多情况下也不是正确的选择。

您可以通过套接字发送HTML文件的内容,然后在客户端进行处理。 有一个javascript函数,可以用给定的HTML内容替换整个页面。

或更有效的方法是,仅发送文件的路径,然后在客户端通过ajax调用加载文件,然后将整个页面内容替换为ajax调用的结果。

io.on('connection', function (socket) {
    socket.on('login', function (username) {
        if (username === 'user')
        {
            console.log("Login Sucessful");
            socket.send('replace-page', 'main.html'); // send the file name
        }
    });
});

在客户端,具有侦听replace-page事件的功能。 根据您使用的技术,您可以加载内容并以多种方式替换页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM