我正在创建一个应用程序,该应用程序将监视一个文件并从该文件中获取内容(类似于tail,但也可能分页先前的数据)。我阅读了许多解决方案,从产生新进程到仅获取文件的更新字节,但在某些方面我还是有些困惑。
我要确切地执行以下操作:
我正在寻找上述子问题的有效解决方案,也欢迎寻求更好方法的任何建议。
仅供参考,我是Node.js的新手,因此您在解决方案中的冗长程度将受到高度赞赏。
答案 0 :(得分:0)
建议您看看chokidar,它是fs.watch,fs.events和本机node.js库的优化实现。
// Initialize watcher.
const watcher = chokidar.watch('some/directory/**/*.xml', config);
// Add event listeners.
watcher
.on('add', path => log(`File ${path} has been added`))
.on('change', path => log(`File ${path} has been changed`))
.on('unlink', path => log(`File ${path} has been removed`));
在这里您可以查看diff模块。并且您将需要存储先前文件和当前文件的状态。为了构建更改。
您将需要创建一个websocket服务器,建议您使用socket.io,然后在您的应用程序中创建diff并将websocket消息发送到服务器。服务器将把消息通知/广播到所需的客户端。