作为一个新手,我正在编写一个简单的应用程序,它将监视我的服务器中的文本文件,并且只要文本文件发生任何更改,我就必须将文件内容发送给客户端。
我正在使用node.js
和angular
。
目前我正在考虑使用带有express的socket.io但不确定它是否是正确的方法。
需要帮助才能找到正确的方法。
我的示例服务器代码如下。
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var fs = require('fs');
var filePath = 'C:\\MyPrograms\\testfile.txt';
var file = fs.readFileSync(filePath);
app.use(express.static(__dirname + '/public'));
io.on('connection', function(socket) {
console.log('new connection');
});
server.listen(4041, function() {
console.log('server up and running at 4041 port');});
console.log('Initial File content : ' + file);
fs.watch(filePath, function(event, filename) {
if(filename){
file = fs.readFileSync(filePath);
console.log('File content : ' + file);
io.emit('filemodified', { message: 'Content Changed' });
} else{
console.log('filename not provided')
}
});
还请建议如果不使用socket.io,我可以使用nodemon。
答案 0 :(得分:1)
如果我正确理解您的问题,fs.watch(filePath, function(event, filename) {});
API应该可以正常工作。
我唯一想提出的建议是了解 socket.io 和网络套接字之间的区别。
Socket.io提供了许多您可能未在应用程序中使用的功能。
但是,使用socket.io的开销是你必须在客户端包含一个额外的脚本才能使它工作。
另一方面,web-socket是一项核心功能,您不必包含任何外部依赖项以使其正常工作。
显然,网络套接字不像socket.io那样功能丰富,按照要求选择其中一个选项总是更好。
我希望这会有所帮助:)
答案 1 :(得分:0)
谢谢我使用socket.io完成它,因为这将有助于我未来的项目。不知道为什么我要求nodemon作为替代品。感谢。