在 NodeJS 中存储临时变量
Storing Temporary Variables in NodeJS
我刚刚开始尝试使用 NodeJS 和 socket.io 创建一个简单的多人在线游戏(类似于在线国际象棋的想法)。如果我的问题的答案真的很明显,我深表歉意,因为我试过谷歌搜索,但我认为我缺少一些关键的理解。
基本上,当应用程序 运行 时,我需要在服务器上存储一些东西。例如:
- 我需要存储哪些套接字连接是主机,哪些是播放器。
- 我需要存储每个游戏的当前状态(例如,在国际象棋的情况下,棋子在哪里,轮到谁了)
- 如果能够存储所有 socket.io "rooms".
也很好
此时请随意回答问题,以下信息供额外参考。
有一些是我尝试过或在网上看到的:
- 当我 google 使用 "persistence" 时,我得到的结果基于保存到数据库或其他东西,我认为这不是我想要的。
- 我试过在 NodeJS 文件的顶部添加变量,就像我在普通 JS 文件中添加全局变量一样。这似乎可行,但我觉得不对,如果有人能解释这是如何工作的,那就太好了。
- 我也看到了会话变量,我想这可能就是我想要的。
- 我看到应用程序通过在客户端和服务器之间来回传递信息来做到这一点,但我更希望客户端不能只编辑信息 "hack" 到游戏。
感谢任何帮助或解释。
保存到数据库没问题。如果您的服务器崩溃并在几秒钟后重新启动,您真的不希望每个人的数据都被抹去。我认为您正在以数据库总是长期且缓慢的方式来考虑它。但实际上,有一些数据库技术非常适合这类事情,并且经常与 socket.io.
一起使用
我可能会选择的是 Redis,它速度超快并且在内存中存储数据。这意味着它不会不断地写入磁盘,并且它在像 MySQL 这样的完全持久存储和通过变量将其保存在节点内存中的稍微狡猾的方法之间有点折衷。
当 reddit 创建 "Place" 时,那个拥有大量并发用户的大型多人绘图,他们同时使用了 Redis 和 Cassandra。 You can read a bit about it here.
我刚刚开始尝试使用 NodeJS 和 socket.io 创建一个简单的多人在线游戏(类似于在线国际象棋的想法)。如果我的问题的答案真的很明显,我深表歉意,因为我试过谷歌搜索,但我认为我缺少一些关键的理解。
基本上,当应用程序 运行 时,我需要在服务器上存储一些东西。例如:
- 我需要存储哪些套接字连接是主机,哪些是播放器。
- 我需要存储每个游戏的当前状态(例如,在国际象棋的情况下,棋子在哪里,轮到谁了)
- 如果能够存储所有 socket.io "rooms". 也很好
此时请随意回答问题,以下信息供额外参考。
有一些是我尝试过或在网上看到的:
- 当我 google 使用 "persistence" 时,我得到的结果基于保存到数据库或其他东西,我认为这不是我想要的。
- 我试过在 NodeJS 文件的顶部添加变量,就像我在普通 JS 文件中添加全局变量一样。这似乎可行,但我觉得不对,如果有人能解释这是如何工作的,那就太好了。
- 我也看到了会话变量,我想这可能就是我想要的。
- 我看到应用程序通过在客户端和服务器之间来回传递信息来做到这一点,但我更希望客户端不能只编辑信息 "hack" 到游戏。
感谢任何帮助或解释。
保存到数据库没问题。如果您的服务器崩溃并在几秒钟后重新启动,您真的不希望每个人的数据都被抹去。我认为您正在以数据库总是长期且缓慢的方式来考虑它。但实际上,有一些数据库技术非常适合这类事情,并且经常与 socket.io.
一起使用我可能会选择的是 Redis,它速度超快并且在内存中存储数据。这意味着它不会不断地写入磁盘,并且它在像 MySQL 这样的完全持久存储和通过变量将其保存在节点内存中的稍微狡猾的方法之间有点折衷。
当 reddit 创建 "Place" 时,那个拥有大量并发用户的大型多人绘图,他们同时使用了 Redis 和 Cassandra。 You can read a bit about it here.