Я смотрю файл с:
fs.watch('./data/object.json', (eventType, filename) => {})
if (`${eventType}` === 'change'){
// I call my emission function.
emission(/* passing the contents of the file here */);
})
Вот что такое функция излучения:
// Just a dummy place-holder function.
// We later replace that with the real function inside the websocket
// block.
var emitter = function() {};
// Define a hook for the emission point.¬
// 'input' is the bit that receives the contents of the file.
var emission = function(input) {
emitter(input);
};
Я делаю это, потому что позже внедряю функцию в вызов веб-сокета:
wss.on('connection', function(ws) {
emitter = function(input){
// This receives the contents of the file through the input.
// Do some more stuff, convert 'input' into 'data'...
// ... and send to the client.
wss.clients.forEach(function(client) {
client.send(data);
}
}
});
Поэтому я заменяю фиктивную функцию эмиттера на реальную, пока она находится внутри блока подключения к websocket.
Хотя это немного запутанно, пока это работает. Я получаю постоянный поток в реальном времени для клиента при изменении содержимого файла.
Моя проблема: я не могу поймать событие, когда содержимое файла больше не меняется. Я должен быть в состоянии уловить это и сообщить клиенту, что файл больше не меняется.
Каков наилучший способ решить эту проблему?