Osservare le modifiche ai file con node.js

Ho il seguente UseCase:

A crea una chat e invita B e C – Sul server A crea un file. A, B e C scrivono messaggi in questo file. A, B e C leggono questo file.

Voglio creare un file sul server e osservare questo file se qualcun altro scrive qualcosa in questo file invia nuovamente il nuovo contenuto con websocket.

Quindi, qualsiasi modifica di questo file dovrebbe essere osservata dalla mia applicazione node.js.

Come posso osservare i cambiamenti di file? Questo è ansible con il nodo js senza bloccare i file?

Se non è ansible con i file, sarebbe ansible con object di database (NoSQL)

La buona notizia è che puoi osservare i cambi di file con l’API di Node.

Leggere il documento dell’API Node.js è molto utile quando si capiscono queste cose. È una fonte inestimabile. 🙂

Questo tuttavia non ti dà accesso ai contenuti che sono stati scritti nel file. Puoi forse usare fs.appendFile(); funzione in modo che quando qualcosa viene scritto nel file si emetta un evento per qualcos’altro che “registra” i nuovi dati che si sta scrivendo.

fs.watch(): incollato direttamente dai documenti

 fs.watch('somedir', function (event, filename) { console.log('event is: ' + event); if (filename) { console.log('filename provided: ' + filename); } else { console.log('filename not provided'); } }); 

Leggi qui su fs.watch (); funzione

EDIT : puoi usare la funzione

 fs.watchFile(); 

Leggi qui su fs.watchFile (); funzione

Questo ti permetterà di guardare un file per le modifiche. Vale a dire. ogni volta che vi si accede da altri processi di qualsiasi tipo.

Inoltre è ansible utilizzare il nodo-orologio . Ecco un semplice esempio:

 const watch = require('node-watch') watch('README.md', function(event, filename) { console.log(filename, ' changed.') }) 

Non penso che sia necessario osservare le modifiche ai file o utilizzare un database NoSQL per questo (se non si desidera). Il mio consiglio sarebbe di guardare gli eventi ( modello Observer ). Ci sono più che sufficienti tutorial su questo argomento disponibili online (Google). Per esempio l’articolo di Felix sull’uso di EventEmitters

Questa semantica di pubblicazione / sottoscrizione può essere ottenuta anche con NoSQL. Ad esempio, in Redis , dovresti dare un’occhiata a pubsub .

In MongoDB penso che i cursori disponibili siano quelli che stai cercando. Sul loro blog hanno un post che spiega pub / sub .