节点的事件循环是否意味着我需要重新考虑用户variables存储?

我只是想到了节点为每个用户提供服务的方式。

根据我的理解,在PHP中,为每个用户都创build了一个新的(线程)环境,所以我的脚本只需要关注一个用户,而且这个用户将适用于每个用户。

现在,从我对node非常有限的理解,一个事件循环正在处理所有的用户。 所以在这个脚本片段中,

//imaginary script to validate user's post to server (log-in attempt) next: console.log('user logged in successfully!'); var username = req.body.username; //imaginary script that takes the username and processes it somehow, using my username variable 

如果另一个用户从最后一个用户login后,用户usernamevariables将被覆盖,现在一切都搞砸了。 而使用PHP,当一个新用户连接时,他将被处理一个新的复位环境。

这可能不完全正确,但是我所看到的是我需要保留客户端上的所有用户相关数据,并将所有客户端和服务器之间的所有数据作为一个包传递,而不保留任何用户数据存储在服务器端。

我是否在这里跟踪,完全混淆,还是有更好的方法来思考这个问题?

这一切都取决于variables的范围(它创build的地方)。 考虑这个简单而简单的例子:

 var http = require('http'); var variableOne = "foobar"; http.createServer(function (req, res) { var variableTwo = "barfoo"; }).listen(1337, '127.0.0.1'); 

variableOne是一种全局的,因为node.js只会在启动时通过variables声明一次。 该variables在scipt中随处可见,因此每个请求/用户都可以更改。

为node.js处理的每个请求创buildvariableTwo 。 有可能,这个variables有多个版本。

处理permant用户数据时,您需要以某种方式进行存储,以后可以访问,但对用户来说是唯一的。

再一个简单的例子:

 var http = require('http'); var userData = {}; http.createServer(function (req, res) { userData[request.connection.remoteAddress] = "some unique user data"; }).listen(1337, '127.0.0.1'); 

它将为每个IP地址保存some unique user data 。 您稍后可以通过检查以前是否使用IP地址来读取数据。 这不是很实际,但应该给你一个想法。 在现实世界的例子中,您将为每个用户生成一个独特的cookie。