2

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

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

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

那么实现这一目标的完美方法是什么?

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

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

4

1 回答 1

1

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

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

稍后编辑:这是有关会话存储的优点和缺点的一小部分列表。它不适用于 node.js,但适用于此处: http ://techwhizbang.com/2009/12/memcache-session-store/

于 2012-12-18T13:03:16.290 回答