2012-12-03 104 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的解决方案? –