首页 > 解决方案 > 在 nodejs 中有效地跟踪文件

问题描述

我正在创建一个应用程序,它将监视一个文件并从该文件中获取内容(类似于 tail,但也可以在以前的数据中分页)。我阅读了很多解决方案,从生成新进程到仅获取文件的更新字节,但我仍然对某些部分感到有些困惑。

我想要做的是以下内容:

我正在为上述子问题寻找有效的解决方案,也欢迎任何关于更好方法的建议。

仅供参考,我是 nodejs 的新手,因此您的解决方案中的冗长将不胜感激。

标签: node.jsfstail

解决方案


留意变化

建议你看看chokidar,它是对原生 node.js 库 fs.watch、fs.events 的优化实现。

// 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,然后在您的应用程序中创建差异并将 websocket 消息发送到服务器。服务器会将消息通知/广播给所需的客户端。


推荐阅读