首页 > 解决方案 > 如何发送一个 HTML 文件,然后一旦客户端请求,发送一个不同的?

问题描述

注意:我使用的是 node.js、express.js 和 socket.io。

我正在尝试创建一个网页,当用户连接时,它将从一个 .html 页面(称为homepage.html)显示,但根据请求,将发送一个不同的 .html 文件(称为lobby.html)进行显示.

所以我的问题是:如何最初发送一个 .html 文件,然后根据要求发送另一个文件?

server.js -

var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);

http.listen(3000, () => {
  console.log('listening on *:3000');
});

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/homepage.html');
});

这成功地将我的homepage.html发送到要显示的客户端浏览器。但是,我希望能够发送一个完全不同的 .html 文件来响应客户端请求。通过在我的homepage.html文件中包含以下内容,我是否走在正确的轨道上...

app.get('lobby', (req, res) => {
  res.sendFile(__dirname + 'lobby.html');
}

...然后在我的server.js*中,添加类似...

let http = require('http');

const options = {
    hostname: "/",
    port: 3000,
    method: "GET"
}

const req = https.request(options, res => {
    ; // How do I display the response .html file?
});

// when a button or something is clicked, request
// lobby.html
req.write();

req.end();

非常感谢你的帮助!

埃里克

标签: javascriptnode.jsexpresshttpsocket.io

解决方案


是的,这/lobby.html就是我想要为响应请求而提供的服务/lobby

然后只需将您更改server.js为此(即添加新get映射):

var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);

http.listen(3000, () => {
  console.log('listening on *:3000');
});

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/homepage.html');
});

app.get('/lobby', (req, res) => {
  res.sendFile(__dirname + '/lobby.html');
});

推荐阅读