簡體   English   中英

如何在Node.js中的地址端口之間切換

[英]How to switch between address port in Node.js

在Node.js應用程序中,我正在偵聽localhost上的兩個端口,如下所示:

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

function startServer(port, hostname, app) {

    app.get('/', (req, res) => {
      res.send(`Welcome on server ${hostname} on port ${port}`);
    });

    app.listen(port, hostname);
    console.log(`listening ${hostname} on port ${port}`);
};

function startServerRedirect(port, hostname, app) {

    app.get('/', (req, res) => {

      res.send(`running server on ${hostname} on port ${port}`);
      res.redirect('localhost:4000');
    });

    app.listen(port, hostname);
    console.log(`listening ${hostname} on port ${port}`);
};

var hostname = '127.0.0.1';
startServerRedirect(3000, hostname, app);
startServer(4000, hostname, app);

我在默認的80端口上運行第一台服務器時遇到問題,但這沒關系。 我希望能夠在另一個服務器端口上發送用戶並顯示他/她的其他內容。 對我而言,以這種方式而不是app.route方式進行操作非常重要。

嘗試這個

const port = process.env.PORT || 80 ;

為了使該設置生效,您需要更改幾件事。

首先,您需要兩個單獨的快速應用程序,一個用於處理重定向,另一個用於接收重定向。 即2個不同的端口。

const app1 = express()
const app2 = express()

當然,最后,您可以將它們傳遞給您的輔助函數:

startServerRedirect(3000, hostname, app1);
startServer(4000, hostname, app2);

另外,在您的redirect調用中,請確保在本例中使用帶有“ http://”的完整網址,即http://localhost:4000

最后,您不想在res.redirect之前調用res.send 原因是res.send開始響應,但是res.redirect設置http標頭。 您設置的所有HTTP標頭都需要首先完成。 所以在這里,因為這只是提供信息,如果您想檢查應用程序的工作原理,可以使用console.log代替:

app.get('/', (req, res) => {
  console.log(`running server redirect on ${hostname} on port ${port}`);
  res.redirect('http://localhost:4000');
});

那在startServerRedirect

至於端口80,我相信您需要root用戶訪問權限才能在此處運行,但這是另一個問題...(nginx代理?)

暫無
暫無

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

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