这是一个简单的程序:
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可以在没有任何外部存储的情况下这样做?它是单进程但是多线程吗?
如何声明属于特定会话的变量?
我正在尝试将我的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)