Node.js:在客户端上创build增量监视文件侦听器,分别连接并删除它们
我目前有一个客户端连接事件,当火灾,开始看文件。 当第二个客户端连接时,同一个文件再次被监视。 (使用fs.watchFile()
)
在客户端断开事件,该文件是unwatched。 (使用fs.unwatchFile()
)因此,如果第一个客户端断开连接,则该文件也是第二个客户端未查看的。
我如何解决这个问题? 我已经尝试使用fs.watchfile
和fs.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,那么你真正需要的是像数组或对象这样的数据结构。