如何从节点js服务器(快速)向角度js发送实时文件更新

时间:2018-01-03 14:11:28

标签: javascript angularjs node.js socket.io

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

我正在使用node.jsangular

目前我正在考虑使用带有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。

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,fs.watch(filePath, function(event, filename) {}); API应该可以正常工作。

我唯一想提出的建议是了解 socket.io 网络套接字之间的区别。

Socket.io提供了许多您可能未在应用程序中使用的功能。

但是,使用socket.io的开销是你必须在客户端包含一个额外的脚本才能使它工作。

另一方面,

web-socket是一项核心功能,您不必包含任何外部依赖项以使其正常工作。

显然,网络套接字不像socket.io那样功能丰富,按照要求选择其中一个选项总是更好。

我希望这会有所帮助:)

答案 1 :(得分:0)

谢谢我使用socket.io完成它,因为这将有助于我未来的项目。不知道为什么我要求nodemon作为替代品。感谢。