簡體   English   中英

Node.js在遠程網絡上提供HTML文件

[英]Node.js serving a HTML file on a remote network

我是Node.js新手,所以我不確定是否有可能做我想完成的事情。 這是我的配置:

我的家庭網絡上的Raspberry Pi上運行着一個Node.js服務器。 我在外部IP上有一個HTML文件。 我希望在此HTML文件上呈現React組件。

據我所知,人們已經使用Node服務器在本地HTML文件上顯示js,因此該路徑通常看起來像這樣,假設目錄名為“ dir”:

const express = require('express');
const app = express();

// Static Routes
app.use('/dist', express.static(path.join(__dirname, 'dir')));

// App Route
app.get('/', (req, res, next) => res.sendFile(path.join(__dirname, 
'index.html')));

據我所知,該文件將傳輸在先前指定的路徑中找到的HTML文件。 但是,這轉移到了哪里? 我可以基於外部IP +用戶+密碼以及文件路徑指定路徑名嗎?

對於存儲在遠程計算機上的文件,您無法直接實現它。 Express靜態路徑僅適用於本地文件系統。

可能的方法是,每次收到新請求時從遠程計算機獲取文件。 但是沒有人這樣做。

據我所知,該文件將傳輸在先前指定的路徑中找到的HTML文件。 但是,這轉移到了哪里?

當客戶端請求文件內容時(即不在服務器啟動時),它將文件內容從磁盤傳輸到客戶端的網絡連接。

我可以基於外部IP +用戶+密碼以及文件路徑指定路徑名嗎?

不能與express.static 如果要使服務器為外部頁面服務(代理),可以執行以下操作: https : //stackoverflow.com/a/10435819/7011366 由於您可以訪問url和cookie,因此您可以使用路徑/用戶/密碼進行任何操作。

app.post('/my_url', function(req, res) {
  var options = {
    host:   MY_DOMAIN,
    path:   '/' + req.query.username,
    method: 'GET',
  };
  var req = http.request(options, function(res) {
    // etc...
    // send response to client
  }).on('error', function(e) {
    // handle error...
  }).end();
});

上面的示例在每個請求中都向外部頁面發出一個請求。 如果您不希望這樣做,可以將其存儲在內存中,並僅定期進行更新。

let myHtml = "";
let fn = () => {
  var options = {
    host:   MY_DOMAIN,
    path:   '/' + req.query.username,
    method: 'GET',
  };
  var req = http.request(options, function(res) {
    // etc...
    // save response to myHtml as string
  }).on('error', function(e) {
    // handle error...
  }).end();
};
setInterval(fn, 60000);
fn();
app.post('/my_url', function(req, res) {
  res.end(myHtml);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM