我有以下用例:
A 创建一个聊天并邀请 B 和 C - 在服务器上 A 创建一个文件。A、B 和 C 将消息写入此文件。A、B 和 C 读取此文件。
我想在服务器上创建一个文件并观察这个文件,如果其他人在这个文件中写了一些东西,用 websockets 将新内容发送回来。
因此,我的 node.js 应用程序应观察此文件的任何更改。
如何观察文件更改?在不锁定文件的情况下使用 node js 是否可行?
如果无法使用文件,是否可以使用数据库对象(NoSQL)
我有以下用例:
A 创建一个聊天并邀请 B 和 C - 在服务器上 A 创建一个文件。A、B 和 C 将消息写入此文件。A、B 和 C 读取此文件。
我想在服务器上创建一个文件并观察这个文件,如果其他人在这个文件中写了一些东西,用 websockets 将新内容发送回来。
因此,我的 node.js 应用程序应观察此文件的任何更改。
如何观察文件更改?在不锁定文件的情况下使用 node js 是否可行?
如果无法使用文件,是否可以使用数据库对象(NoSQL)
好消息是您可以使用 Node 的 API 观察文件更改。
但是,这不会让您访问已写入文件的内容。您可以使用该fs.appendFile();
功能,以便在将某些内容写入文件时向其他“记录”正在写入的新数据的其他内容发出事件。
fs.watch():
直接从文档粘贴
fs.watch('somedir', function (event, filename) {
console.log('event is: ' + event);
if (filename) {
console.log('filename provided: ' + filename);
} else {
console.log('filename not provided');
}
});
编辑:您可以使用该功能
fs.watchFile();
这将允许您查看文件的更改。IE。每当它被其他任何类型的进程访问时。
您也可以使用node-watch。这是一个简单的例子:
const watch = require('node-watch')
watch('README.md', function(event, filename) {
console.log(filename, ' changed.')
})