node.js模块variables是否跨多个调用共享?

即时通讯创build一个node.js服务器,我有一个“通知”模块。 节点服务器上的每个请求都会调用这个模块,我需要为每个单独的调用设置一组私有variables。

例如,当对通知模块发出请求时,需要记住用户ID,请求时间,会话ID等。

我怎样才能有效地做到这一点?

如果我简单地声明模块范围内的variables,他们似乎是为每个模块调用共享。 所以,它不能私下记住每个请求的数据。

我需要的是每次我调用一个node.js模块时,它会记住当时的数据。 所以,请指出我该怎么做?

谢谢,
安键

更新

node.js服务器将用作聊天服务器。 “通知”模块将扫描数据库中的新消息,并使用长轮询技术以json格式将输出发送到客户端。

我试图把数据和函数包装到一个对象中。 然后,每次向聊天服务器发出请求时,都会创build一个新的对象,并且它将继续执行所需的function。 但它所做的是不是并行工作,而是串行执行每个请求。 所以,如果我向服务器发出3个请求,他们只是排队并执行一个接一个。

任何线索呢?

模块源代码可以在这里find: http : //www.ultrasoftbd.com/notifications.js

谢谢,Anjan

有几个方法可以想到解决这个问题:

1)让你的模块导出一个可以被你的模块的API用户调用的构造函数,给它们一个对象的新实例。 这样,每个用户将有自己的对象实例,它有自己的私有variables。

// Client example. var mod = require('myModule') , sess = new mod.Session(); sess.method(args); sess.finalize(); 

2)让你的模块为这些私有variables提供一个“registry”接口,这个私有variables包含一个对调用者唯一的标识符。

 // Client example. var mod = require('myModule'); var id = mod.initialize(); // Returns a unique ID. mod.method(id, args); // Each method requires the ID. mod.finalize(id); 

这些解决scheme共享这样的想法,即每个实例(或ID)由模块分别跟踪,以便统计信息(或任何模块执行的操作)可以按客户端实例进行计算,而不是在模块的全局范围内进行计算。