2012-12-03 37 views
2

我幾乎用node.js和socket.io完成了基於回合的多人遊戲。在node.js中分離遊戲服務器和Web服務器

我express.js作爲Web服務器和其他類充當遊戲服務器,使用socket.io。

我的問題是,這兩個在同一個應用程序中運行。我有一個網絡登陸頁面,用戶可以登錄並查看他們的球員詳細信息並在大廳聊天。現在直到這裏,沒有什麼與遊戲邏輯有關。所以我問自己爲什麼在這個地獄是這個遊戲服務器運行在與web服務器相同的應用程序。另外請注意,未來可能會有不同的服務器,例如(歐洲服務器,美洲服務器,亞洲服務器等),但是登錄頁面和登錄機制保持不變。

那麼達到此目的的最佳方法是什麼?

我應該做兩個單獨的node.js應用程序,一個網絡服務器和一個遊戲服務器。然而,在那種情況下,我能夠在套接字和請求之間共享會話數據嗎?

另一個缺點是,瀏覽網站時,意外的情況可能會導致服務器無法拋出異常,並關閉應用程序從而關閉遊戲服務器也。

回答

1

你可能有完全獨立的Node.js應用程序和一個共同的會話存儲,比如Redis的,要檢查如果用戶允許訪問遊戲服務器之前與web服務器進行身份驗證。普通會話商店也可以幫助同時使用遊戲服務器,而不僅僅是一臺網頁+一臺遊戲服務器。

您還可以防止通過捕獲所有錯誤關閉應用程序,但一般不建議使用。

後來編輯: 這裏是一個關於會議商店的優點和缺點的小列表。它不適用於node.js,但它適用於此處: http://techwhizbang.com/2009/12/memcache-session-store/

+0

發佈此問題後,我對此問題做了更多調查。對於node.js來說,最好的選擇就是你的建議。你的回答在這個問題上是正確的。但我想了解更多。您是否會分享您對這種情況解決方案架構的看法,而不是基於node.js和redis的解決方案? –