nodejs:每次向文件中添加行时,都会向服务器发送新的文件内容

nodejs: send new file contents to a server everytime line gets added to file

本文关键字:文件 服务器 添加行 nodejs      更新时间:2023-09-26

我是一个绝对的nodejs初学者,即使在实现简单的东西时也会遇到问题。我想实施以下情况

  1. 我有两台机器(m1,m2)正在将日志写入一个文件(~/Desktop/logs)
  2. 每次有新行添加到我的日志文件中时,我都想将这些新行发送到中央计算机(mCentral)

请注意,这是一个持续不断的过程。我的日志文件并不完整,但它们正在不断填充。

如有任何帮助/提示,我们将不胜感激。

问候

您可以使用socket.io 轻松解决问题

Socket.IO支持基于事件的实时双向通信。

在您的情况下,您有两个服务器,每个服务器都写入日志文件,因此在写入函数之后,您必须发出一个事件,我们记录了一条消息,然后我们将在客户端机器"mcentral"中捕获此事件。你没有发布你的源代码,但在包括socket io之后,它将以某种方式如下:

机器m1和m2

var io= require("socket.io").listen(http); 
// http is your HTTP server created with require("http")
// your function writes in log file a variable called line
// We will emit an event to mcentral that we logged line
io.sockets.on('connection', function (socket) {              
    socket.broadcast.emit('logging', {message: line}); // we emit an event
}); 
});
// our server is listening on port 3000 (example)
http.listen(3000,function(){
console.log("Listening on 3000");
});

机器中心在一个简单的网页中,我将收听我们在机器m1和m2中创建的一个名为logging的事件,当捕捉到这个事件时,我们将显示在html部分(我的示例)中添加的行

<html>
<head>
    <title> List </title>
</head>
<body>
    <section id="zone_msg">
    </section>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
         var socket = io.connect('http://localhost:3000');
         socket.on('logging', function(data) {
              $('#zone_msg').prepend('<p> </strong> ' + data.message + '</p>');             
        })     
    </script>
</body>

Socket.io是实时的,可以帮助您解决此类问题。如果我的示例不太清楚,您可以查看其他资源,如这里和这里的