2017-02-03 21 views
-1

如何在兩個不同端口上同時運行node.js項目? 例如domain.com:1010/和domain.com:2020/如何在不同端口上運行signle node.js項目

但是這兩個不同端口的來源應該是同一個項目。 謝謝。

+0

你能不能用'。聽()'多次? – MayorMonty

+0

是的,我試圖在不同的端口上同時運行,但只與第一個端口一起工作。 –

+0

沒有足夠的細節。你想使用相同的過程還是同一個程序? –

回答

1

我頭腦中的第一個想法是通過端口作爲參數。 隨着應該有一個終端和

$ node app.js 2020 
在另一個

使用

$ node app.js 1010 

沒有問題。 可以得到參數傳遞給你的程序有一個數組

process.argv 

例如process.argv[1]應該給你的端口,如果你開始你的應用程序,因爲我沒有上

+0

感謝您的解決方案,它的工作!你怎麼看,服務器同時運行2臺服務器不是很重要嗎? –

+1

Re:服務器上的負載 - 這種方法創建兩個node.js進程來使用兩個不同的端口運行腳本兩次,因此它需要兩倍的資源。下面@MayorMonty給出的答案僅創建一個node.js進程,因此需要的資源較少,但單個node.js進程將不得不監聽並提供更多請求。它會太重嗎?這取決於你的服務器硬件 - 我想說的可能不是,除非你試圖在Raspberry Pi上運行它,或者是非常低功耗的東西。 – Kryten

+0

正如@Kryten所說的。我想要指出的是Node是單線程的,所以使用這種方式你可以獲得某種並行性。 –

2

如果您有http.Server類變量,像所以:

var server = http.createServer(handler); 

您不能多次撥打.listen();隨後的通話不起作用。

但是你可以做的是同樣的處理程序註冊兩個http.Server類和有.listen()到不同的端口,如:

var server1 = http.createServer(handler) 
var server2 = http.createServer(handler) 

server1.listen(3000); 
server2.listen(5000); 
相關問題