Javascript 如何为Nodejs中的每个单独连接的客户端保持特定的变量值
我是Nodejs新手,使用Visual Studio 2015和基本的Nodejs Express 4应用程序模板 通过客户端的post请求设置一些值。然后,我打开另一个选项卡并发送另一个post请求。我在上一个请求中设置的值仍然存在。我想为每个连接的客户端设置变量 Nodejs代码Javascript 如何为Nodejs中的每个单独连接的客户端保持特定的变量值,javascript,node.js,express,Javascript,Node.js,Express,我是Nodejs新手,使用Visual Studio 2015和基本的Nodejs Express 4应用程序模板 通过客户端的post请求设置一些值。然后,我打开另一个选项卡并发送另一个post请求。我在上一个请求中设置的值仍然存在。我想为每个连接的客户端设置变量 Nodejs代码 var someValue = 0; app.post('/set-values', function (req, res, next) { var reqBody = req.body; some
var someValue = 0;
app.post('/set-values', function (req, res, next) {
var reqBody = req.body;
someValue += parseInt(reqBody.someValue);
res.send(JSON.stringify({ value:someValue }));
});
客户端代码
$.post("http://localhost:1337" + "/set-values", { someValue: 5 }, function (d) {
var data = JSON.parse(d);
console.log(data.value);
});
当客户端发出请求时,控制台值为5,然后在另一个请求上为10,然后在另一个请求上为15。。。
我希望所有请求都使用5,并在每个连接启动时保留someValue属性0,但我还需要在post范围之外使用它。每次搜索都会向我发送有关socket.io客户端或用户身份验证的页面 您应该为身份请求生成密钥 如果我们假设您将在客户端执行此操作,那么您的代码应该如下所示:
if(typeof(Storage) !== "undefined") {
var val = Math.random().toString(36).substring(7);
localStorage.setItem("key", val);
} else {
alert("web storage not supported")
}
$.post("http://localhost:1337" + "/set-values", { someValue: 5, key:localStorage.getItem("key") }, function(d) {
var data = JSON.parse(d);
console.log(data.value);
});
以及您的服务器端:
var dataStore = [];
app.post('/set-values', function (req, res,next) {
if(dataStore[req.body.key] == undefined) dataStore[req.body.key] = 0;
dataStore[req.body.key] += parseInt(req.body.someValue);
res.send(JSON.stringify({ value:dataStore[req.body.key] }));
})
在本例中,我们使用了HTML5 LocalStorage,您可以尝试jQuery Cookie或其他东西。我一直在避免这种逻辑,并在服务器端寻找身份解决方案。看到所有客户端都连接同一个应用程序实例,真是令人惊讶。我猜node不像asp或php那样工作。有什么建议如何清理节点端的数据存储吗?