我是Nodejs的新手,并使用Visual Studio 2015和Basic Nodejs Express 4应用程序模板。
通过来自客户端的帖子请求设置一些值。然后我打开另一个标签并发送另一个帖子请求。我在先前请求中设置的值仍然存在。我想为每个连接的客户端设置变量。
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客户端或用户身份验证的页面
答案 0 :(得分:0)
您应该为身份请求生成密钥。
如果我们假设您将在客户端执行此操作,则您的代码应如下所示:
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或其他东西。