我目前使用的軌道爲靜態網頁和我有嘗試的NodeJS來處理我的應用程序的一些實時的方面。如何構建服務器的NodeJS和鐵軌之間的溝通?
我已經能夠由有寫的NodeJS到一個數據庫和我的rails服務器從中讀取做的NodeJS之間的單向溝通,我的Rails服務器。
現在我想要做的其他方式,又名Rails中的行動將引發一個的NodeJS行動。很明顯,我可能很笨,並有一個節點不斷輪詢數據庫服務器。
我有什麼選擇?既
- 設置RPC調用建立一個TCP套接字左右逢源
有沒有更簡單/更快的選擇嗎?
我目前使用的軌道爲靜態網頁和我有嘗試的NodeJS來處理我的應用程序的一些實時的方面。如何構建服務器的NodeJS和鐵軌之間的溝通?
我已經能夠由有寫的NodeJS到一個數據庫和我的rails服務器從中讀取做的NodeJS之間的單向溝通,我的Rails服務器。
現在我想要做的其他方式,又名Rails中的行動將引發一個的NodeJS行動。很明顯,我可能很笨,並有一個節點不斷輪詢數據庫服務器。
我有什麼選擇?既
有沒有更簡單/更快的選擇嗎?
那麼技術上你有很多方面的inter process communication,如果你想要的東西容易,我相信你應該看看dnode這在TCP或命名管道提供RPC,它有一個ruby implementation。使您可以輕鬆地進行RPC調用,並且由於它是TCP,因此您可以將其用於跨機器。
你也可以有一個消息隊列這樣zeromq,但我相信會有不必要的開銷。如果你有兩個以上的進程相互交談,那麼這將會很好。
除了所有這些,如果你想要最小延遲,如果你的進程都在一臺機器上運行,我相信你應該使用命名管道和stdio進行通信,但我不知道任何節點上的模塊將幫助您將其抽象化,並且您必須在stdio上構建自己的RPC模塊。
+1這是一個非常整潔的解決方案。謝謝你的工作。 – lorefnon 2013-02-19 18:29:45
爲了補充說明,如果您想要一個生態系統,必須考慮到zeromq,因爲它必須是語言不可知的 - 用不同語言編寫的不同進程之間要通過標準化協議進行通信。這就是zeromq可以提供 - 簡化通信層,使它很容易的過程來相互交談。 – 2012-06-15 04:43:26