Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为Nodejs中的每个单独连接的客户端保持特定的变量值_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何为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

我是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;
    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那样工作。有什么建议如何清理节点端的数据存储吗?