Javascript 如何将实时文件更新从node js server(express)发送到angular js

Javascript 如何将实时文件更新从node js server(express)发送到angular js,javascript,angularjs,node.js,socket.io,Javascript,Angularjs,Node.js,Socket.io,作为一名新手,我正在编写一个简单的应用程序,它将监视我服务器中的文本文件,每当文本文件发生任何更改时,我都必须将文件内容发送给客户端 我正在使用node.js和angular 目前我正在考虑将socket.io与express一起使用,但不确定是否正确 需要帮助才能找到正确的方法 下面是我的示例服务器代码 var express = require('express'); var app = express(); var server = require('http').Server(app);

作为一名新手,我正在编写一个简单的应用程序,它将监视我服务器中的文本文件,每当文本文件发生任何更改时,我都必须将文件内容发送给客户端

我正在使用
node.js
angular

目前我正在考虑将socket.io与express一起使用,但不确定是否正确

需要帮助才能找到正确的方法

下面是我的示例服务器代码

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')
  }
});

还请建议我是否可以使用nodemon来代替socket.io。

如果我正确理解了您的问题,
fs.watch(文件路径、函数(事件、文件名){})API应该可以正常工作

我想给你的唯一建议是理解socket.iowebsockets之间的区别

Socket.io提供了大量应用程序中可能未使用的功能

然而,使用socket.io的开销是,您必须在客户端包含一个额外的脚本才能使其工作

另一方面,WebSocket是一个核心特性,您不必包含任何外部依赖项即可使其正常工作

显然,web套接字的功能不如socket.io丰富,最好根据需要选择其中一个选项


我希望这有帮助:)

谢谢我使用socket.io完成了这项工作,因为这将对我未来的项目有所帮助。我不知道我为什么要找诺德蒙做替补。谢谢。

你的问题不太清楚。如果您有一个特定的问题(例如,“客户从未收到更改通知”或“X行出现错误(包含详细信息”),请指定该问题。因为我是新手,所以只想知道我是否按照我的要求采取了正确的方式,或者这是过火了。另外,当我运行上面的脚本时,我的客户端从未收到通知,我只在控制台上收到大量连续的新连接消息。我还有一个困惑。如果我使用nodemon监视我的文本文件进行修改,它会在文本文件更新时自动重新启动脚本,然后通过GET发送文件内容。不确定这会有什么负面影响。