我在服务器端使用Node,Express和Socket.io构建了一个简单的应用程序。我的页面在需要检索不会更改的数据时查询我的API,并使用WebSockets从服务器获取动态数据的实时更新。该应用程序允许一个人,即#34;主管",向任意数量的"用户"发送问题。 (未经身份验证)并在他们涓涓细流时查看他们的答案。用户使用POST请求将他们的数据发送到服务器,并通过WebSocket流式传输到Supervisor。服务器将用户数据存储在一个简单的数组中,并使用数组(用户)中项目的ES6映射到包含每个问题和答案的对象,如下所示:
class User {}
let users = [], qa = new Map();
io.on('connection', socket => {
let user = new User(socket.id);
users.push(user);
qa.set(user, {});
socket.on('question-answered', ({id, answer}) => {
let questionData = qa.get(user);
questionData[id] = answer;
qa.set(user, questionData);
});
});
这显然是处理数据的一种非常原始的方式,但我不认为需要额外的复杂性。数据不需要在服务器崩溃或重新启动时保持不变(用户的问题和答案也存储在localStorage中),MongoDB甚至Redis对这类数据来说似乎有些过分。
所以我的问题是,我是否正确地采取了这种方式?我有什么不足之处吗?我只想要一种简单的方法将数据存储在内存中,并能够通过客户端GET请求和socket.io访问它。谢谢你的帮助。
答案 0 :(得分:1)
如果数组和地图为您提供了数据所需的访问类型,并且您不需要崩溃持久性,并且您拥有适当数量的内存来保存数据量,那么您就可以了解数据量。重做。
除非您的需求(查询,持久性,性能,多用户,崩溃恢复,备份等)需要更复杂的东西,否则不需要更多。这里有一个简单的陈词滥调:如果它没有破损,就不需要修理。