Node.js:在客户端上创build增量监视文件侦听器,分别连接并删除它们

我目前有一个客户端连接事件,当火灾,开始看文件。 当第二个客户端连接时,同一个文件再次被监视。 (使用fs.watchFile()

在客户端断开事件,该文件是unwatched。 (使用fs.unwatchFile() )因此,如果第一个客户端断开连接,则该文件也是第二个客户端未查看的。

我如何解决这个问题? 我已经尝试使用fs.watchfilefs.unwatchFile()的侦听器函数,但我不知道如何在客户端连接上以不同方式命名每个侦听器。

据我所知,创build一个监听器是通过分配一个像这样的variables来完成的:

 var listener1 = function (curr, prev) { console.log('touched 1'); }); 

那么听众可以看或不看:

 fs.watchfile('data.log', listener1); fs.unwatchFile('data.log', listener1); 

每当客户端连接时,如何唯一地命名该侦听器? 那么我可以通过监听器而不是文件解开文件?

创build一个对象,用你用来识别客户端的任何东西来标识,其值是单个的监听者:

 var listeners = {}; ... // When client connects listeners[clientId] = function(curr, prev) { ... }; fs.watchfile('data.log', listeners[clientId]); ... // When client disconnects fs.unwatchfile('data.log', listeners[clientId]); 

作为一般规则,如果你发现自己想要一堆类似命名的variables,每个对象的每个实例都有一个variables,那么你真正需要的是像数组或对象这样的数据结构。