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

时间:2012-12-03 11:41:35

标签: node.js express socket.io

我几乎完成了一个带有node.js和socket.io的回合制多人游戏。

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

我的问题是这两个在同一个应用程序中运行。我有一个网页登陆页面,用户可以登录并查看他们的玩家详细信息并在大厅聊天。现在直到这里没有任何与游戏逻辑相关的东西。所以我问自己为什么这个游戏服务器运行在与webserver相同的应用程序中。另请注意,将来可能会有不同的服务器(欧洲服务器,美洲服务器,亚洲服务器等),但相同的登录页面和登录机制仍然存在。

那么实现这一目标的最佳途径是什么?

我应该制作两个独立的node.js应用程序,一个网络服务器和一个游戏服务器。但是,在这种情况下,我能够在套接字和请求之间共享会话数据吗?

另一个缺点是,在浏览网站时,任何意外行为都可能导致网络服务器抛出异常并关闭应用程序,从而关闭游戏服务器。

1 个答案:

答案 0 :(得分:1)

您可能拥有完全独立的node.js应用程序和公共会话存储(例如Redis),以便在允许访问游戏服务器之前检查用户是否通过Web服务器进行了身份验证。通用会话存储也可以帮助同时进行游戏服务器,而不仅仅是一个网络+一个游戏服务器。

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

稍后编辑: 以下是有关会话商店的一小部分优缺点。它不适用于node.js,但它适用于: http://techwhizbang.com/2009/12/memcache-session-store/