在NodeJS中存储临时变量

时间:2017-11-17 21:51:42

标签: node.js session websocket socket.io session-variables

我刚刚开始尝试使用NodeJS和socket.io创建一个简单的多人在线游戏(类似于在线国际象棋的想法)。我很抱歉,如果我的问题的答案非常明显,因为我试过谷歌搜索,但我认为我错过了一些理解。

基本上,我需要在应用程序运行时在服务器上存储一些东西。例如:

  • 我需要存储哪些套接字连接是主机,哪些是播放器。
  • 我需要存储每个游戏的当前状态(例如,在国际象棋的情况下,这些棋子在哪里,轮到哪个)
  • 能够存储所有socket.io"房间"。
  • 也很好。

此时请随时回答此问题,以下信息仅供参考。

我在网上尝试或看过一些事情:

  • 当我使用" persistence"进行搜索时,我会根据保存到数据库或其他内容获得结果,我认为这不是我想要的。
  • 我试过在NodeJS文件的顶部添加变量,就像我在普通JS文件中使用全局变量一样。这似乎有效,但对我来说感觉不对,如果有人可以解释这是如何工作的那就太棒了。
  • 我也看过会话变量,我想这可能是我想要的。
  • 我已经看到过这样做的应用程序,只需将信息传递回客户端和服务器之间,但我希望客户端不能仅仅将信息编辑为" hack"游戏。

感谢任何帮助或解释。

1 个答案:

答案 0 :(得分:1)

保存到数据库没有错。如果您的服务器在几秒钟后崩溃并重新启动,那么您并不希望每个人的数据都被删除。我认为你正在考虑数据库总是长期和缓慢的方式。但实际上,有一些数据库技术非常适用于这类事物,而且常用于socket.io。

我可能选择的那个是Redis,这是超快的并且将数据存储在内存中。这意味着它不会经常写入磁盘,而且它与拥有MySQL的完全持久存储之间的中间位置,以及通过变量将其保存在节点内存中的略微狡猾的方法。 / p>

当reddit创建" Place",这是一个庞大的多人游戏时,他们使用了Redis和Cassandra。 You can read a bit about it here