2011-07-25 40 views
0

Node.JS實時更新代碼的能力以及自動隔離異常的能力似乎有限。這兩者實際上在Java中都是默認的。Node.JS:將tcp轉換爲stdin/stdout

實時更新的一種非常有效的方法是擁有一個監聽器進程,該進程只是與子進程進行回聲通信。然後爲了更新,監聽器啓動一個新的子代(它自動讀取更新的代碼),然後開始向新的子代發送請求,當所有請求完成時結束舊的子代。

  • 是否已經有一個系統通過stdout/stdin提供了這個http功能。
  • 是否有一個通過stdout/stdin提供TCP服務器或UDP服務器功能的系統。

我的意思是,提供一個模塊看起來像httpnet模塊,它使用標準輸出/標準輸入底層的I/O除外。

類似This CGI module

一些應用程序只需要改變require('http')require('cgi')

我打算做同樣的事情。如果代碼已經存在,我希望能夠重新使用代碼,並且還可以輕鬆地將小型或單一目的Web服務器轉換爲運行多個Web應用程序的偵聽器層。正確地進行清理很重要。應該釋放結束或錯誤的連接,並且應該正確迴應結束/錯誤事件/命令。

(我相信一個常見的方法是讓孩子多聽上的端口並與這些端口父溝通,但我認爲一個標準輸出/標準輸入解決方案的效率會更高)

回答

0

使用nginxHttpUpstreamModule)或HAProxy 。在這兩種情況下,您都需要在前面運行它們,並將後端標記爲關閉,然後在需要執行實時升級時將其重新啓動。

+0

我會考慮它,但我不確定它是否適合我們的結構。它當然需要支持多個後端,每個後端都有自己對特定域/路徑的控制權。 –

0

我不確定這是你在找什麼(的確,我不確定是否理解你的問題),但是Remy Sharp寫了一個非常有用的節點模塊nodemon。它承諾「監控node.js應用程序中的任何更改並自動重啓服務器。」這可能有助於解決實時更新代碼的問題。