在node.js中分离游戏服务器和Web服务器

我已经用node.js和socket.io几乎完成了一个基于回合的多人游戏。

我有express.js作为Web服务器和另一个类作为游戏服务器,使用socket.io。

我的问题是这两个在同一个应用程序中运行。 我有一个网页登陆页面,用户可以login,看到他们的球员的详细信息,并在大堂聊天。 现在直到这里,没有什么与游戏逻辑有关。 所以我问自己为什么在这个游戏服务器运行在同一个应用程序与Web服务器。 另外请注意,将来可能会有不同的服务器,如(欧洲服务器,美洲服务器,亚洲服务器等),但是login页面和login机制保持不变。

那么达到这个目标的最佳方法是什么?

我应该做两个单独的node.js应用程序,一个networking服务器和一个游戏服务器。 然而,在这种情况下,我将能够分享套接字和请求之间的会话数据?

另一个缺点是,当浏览网站时,任何意外的行为都可能导致networking服务器抛出exception并closures应用程序,从而closures游戏服务器。

您可能已经完全分离了node.js应用程序和常见的会话存储区(如Redis),以便在允许访问游戏服务器之前检查用户是否已通过Web服务器进行身份validation。 普通会话商店也可以帮助同时使用游戏服务器,而不仅仅是一台网页+一台游戏服务器。

您也可以通过捕获所有错误来阻止closures应用程序,但通常不build议这样做。

稍后编辑:这是一个关于会议商店的优点和缺点的小列表。 这不是为node.js,但它适用于这里: http : //techwhizbang.com/2009/12/memcache-session-store/