Node.js 节点js服务器程序

Node.js 节点js服务器程序,node.js,express,sockets,server,Node.js,Express,Sockets,Server,我创建了一个非常小的NodeJS项目。我有个问题。当我创建如上所述的变量时,它不会对每个用户分别求值。也就是说,当用户请求get时,我希望它每次都是1。 样品 我的问题是,当一个jack用户进入一个站点时,如果他没有注销,从另一台设备进入该站点主页的人就会进入他与jack的帐户。 我该怎么做呢?对于您的问题,最简单的答案是简单地声明并增加传递给app.get的函数中的变量,但我假设您希望出现这样一种情况,即对于给定用户的一系列请求,数字将增加 最简单的方法是使用库提供的服务器端会话。此外,为了使

我创建了一个非常小的NodeJS项目。我有个问题。当我创建如上所述的变量时,它不会对每个用户分别求值。也就是说,当用户请求get时,我希望它每次都是1。 样品
我的问题是,当一个jack用户进入一个站点时,如果他没有注销,从另一台设备进入该站点主页的人就会进入他与jack的帐户。
我该怎么做呢?

对于您的问题,最简单的答案是简单地声明并增加传递给
app.get
的函数中的变量,但我假设您希望出现这样一种情况,即对于给定用户的一系列请求,数字将增加

最简单的方法是使用库提供的服务器端会话。此外,为了使其工作,您需要调用
res.end()
,以便将与服务器会话关联的cookie发送回用户的浏览器。有关会话的更多信息,请参阅

下面的代码用于复制您在那里的目的,但对于来自唯一浏览器实例(由与服务器会话关联的相同cookie值标识)的每个请求都会递增:


你想在个人用户级别增加i值吗?不是每次调用get方法都要增加i值吗?@ASP yesıwant我希望这会对你有所帮助。我的问题是,当jack用户进入一个站点时,如果他没有注销,从另一个设备进入该站点主页的人就会进入他与jack的帐户。@YusufCıbıl一般来说,这听起来像是在请求之外泄漏状态(例如,
i
变量在请求处理程序之外)。使用如我所示的会话可以稍微涵盖这一点,因为它获取与浏览器关联的会话并从中提取值,而不是操纵全局变量。
const express = require("express");
const app = express();
var i = new Number;
i=0;
app.get("/", function(req, res){
    i++
    console.log(i);
});
app.listen(8080);
const express = require('express');
const session = require('express-session');

const app = express();

app.use(session({
  resave: false,
  saveUninitialized: true,
  secret: 'secret',
  cookie: {
    maxAge: 60000
  }
}));

app.get('/', function(req, res){
  if (!req.session.value) {
    req.session.value = 0;
  }

  req.session.value++;
  console.log(req.session.value);
  res.end();
});

app.listen(8080);