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