我有一個節點服務器,這需要:有沒有辦法在子進程中運行節點任務?
- 即成網頁
- 繼續查詢外部REST API和數據保存到數據庫,並將數據發送到客戶端從REST API某些更新。
任務1僅僅是一個正常的節點任務。但我不知道如何執行任務2.這個任務不會暴露任何接口到外面。這更像是一個背景任務。
任何人可以建議?謝謝。
我有一個節點服務器,這需要:有沒有辦法在子進程中運行節點任務?
任務1僅僅是一個正常的節點任務。但我不知道如何執行任務2.這個任務不會暴露任何接口到外面。這更像是一個背景任務。
任何人可以建議?謝謝。
爲了使運行在同一時間爲第二的Node.js應用你的第一個,你可以創建另一個node.js應用程序,然後從第一個使用child_process.spawn()
運行它。它可以定期查詢外部REST API並根據需要更新數據庫。
的部分約「從REST API將數據發送到客戶的某些更新」不是那麼清楚你想要做什麼。
如果您使用socket.io將數據發送到連接的瀏覽器,那麼瀏覽器必須連接到我相信是你的第一個Node.js的過程中您的Web服務器。要讓第二個node.js進程使數據通過第一個node.js進程中的socket.io連接發送,您需要一些進程間通信方式。您可以通過child_process.spawn()
使用標準輸出和標準輸入,您可以在數據庫中使用某些功能,或使用其他幾種IPC方法中的任何一種。
因爲查詢一個REST API和更新數據庫都是異步操作,他們不花太大的node.js的過程的CPU的。因此,您不必在另一個node.js進程中執行這些操作。你可能只是有一個setInterval()
在主node.js的過程,在一段時間查詢API每一次,更新的結果在收到時數據庫,然後就可以直接訪問socket.io連接將數據發送到客戶端,而不必使用一個獨立的進程和某種IPC機制。
任務1: 快車是完成此任務的好方法。 您可以探索: http://expressjs.com/
任務2:
如果您正在使用Expressjs完成。然後你可以在Express Framework中編寫你的邏輯。 那麼這個任務可以與節點模塊forever來完成。它是一個可以永久運行你的後臺腳本的簡單工具。您可以使用永久連續運行的腳本(無論是寫在node.js中與否)
我打算使用socket.io將數據發送到客戶端(網頁)。 –
@bagusflyer - 如果您使用socket.io向已連接的瀏覽器發送數據,我在回答中添加了一些信息。 – jfriend00
謝謝@ jfriend00,很好的建議。 –