相关疑难解决方法(0)

为什么不同的node.js会话共享变量?

这是一个简单的程序:

var express = require('express');

var app = express.createServer();

var count = 0;

app.get("/", function(req, res) {
    res.send(count.toString());
    count++;
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

当我在两个不同的浏览器中打开它时,第一个显示0和第二个显示1.

为什么?它们是不同的会话,所以我希望node.js为它们使用不同的子进程.我对PHP的理解是,共享变量应该使用数据库来实现.

为什么node.js可以在没有任何外部存储的情况下这样做?它是单进程但是多线程吗?

如何声明属于特定会话的变量?

node.js express

12
推荐指数
2
解决办法
6097
查看次数

在不使用全局变量的情况下在node.js中的文件之间共享变量

我正在尝试将我的socket.io代码分离到我的主文件(app.js)中的单独文件(socket.js).但是,我需要在app.js中定义我的io对象,这也用在我的socket.js文件中.

目前,我将io设置为全局变量,因此可以从app.js访问(app.js中的全局变量可以在路由中访问?),但我知道这是不好的做法.有没有更好的方法来做到这一点(在这种情况下可以注入工作,因为我需要将变量从app.js导出到socket.js而不是相反)?谢谢!

app.js

var app = express(),
  server = require('http').createServer(app);

//KIV -> io is set as a global variable
io = require('socket.io').listen(server);
require('./socket');
Run Code Online (Sandbox Code Playgroud)

socket.js

io.sockets.on('connection', function(socket) {
    //xxx
}
Run Code Online (Sandbox Code Playgroud)

node.js express socket.io

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

express ×2

node.js ×2

socket.io ×1