目前,我正在开发一个基于HTTPS Node.js 服务器的基于 socket.io 的聊天。我已经成功完成了创建自签名证书以运行服务器的正确步骤。我想实现一个 CPU 和 RAM 高效的登录系统,最好不使用任何额外的 Node.js 模块。
目前,这就是我设置用户数据库的方式:
- 在服务器启动时,服务器读取并字符串化包含用户数据的 JSON 文件,并将数组加载到内存中。数据库示例如下所示:
[{"user":"username", "pass":"password", "id":"23a45b"}]
- 当从登录表单向“/login.html”发送 HTTP POST 请求时,服务器会执行此 FOR 循环,其中
postdata
是 HTTP POST 并且userdata
是用户数据库:for (var i = 0; i < userdata.length; i++) { if (postdata.user === userdata[i].user) { if (userdata[i].pass === postdata.pass) { res.writeHead({"Set-Cookie":"chat_user=" + userdata[i].user}, {"Set-Cookie":"chat_id=" + userdata[i].id}); } } }
- 当用户想通过 socket.io 发送消息时,他们会连同他们的用户名和 ID 一起发送消息。另一个 FOR 循环将搜索用户数据库并交叉检查 ID 和用户名以确保它们匹配。每次发送消息时都会发生这种情况。
以下系统听起来是否高效且安全?我可以改进和改变什么?我担心的是,将整个用户数据库保存在内存中对于简单的服务器来说太多了,而且 CPU 可能会做更多有用的事情,然后每次发送消息时检查数据库。