Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs:每次将行添加到文件中时,都将新文件内容发送到服务器_Javascript_Node.js - Fatal编程技术网

Javascript nodejs:每次将行添加到文件中时,都将新文件内容发送到服务器

Javascript nodejs:每次将行添加到文件中时,都将新文件内容发送到服务器,javascript,node.js,Javascript,Node.js,我是一个绝对的nodej初学者,在实现哪怕是简单的东西时都会遇到问题。我想实现以下情况 我有两台机器(m1,m2),它们正在将日志写入一个文件(~/Desktop/logs) 每次向日志文件添加新行时,我都希望将这些新行发送到中央计算机(mCentral) 请注意,这是一个持续不断的过程。我的日志文件不完整,但正在不断填充 任何帮助/提示都将不胜感激 关于您可以使用socket.io轻松解决问题 Socket.IO支持基于事件的实时双向通信 在您的例子中,您有两个服务器,每个服务器都写入日志文件

我是一个绝对的nodej初学者,在实现哪怕是简单的东西时都会遇到问题。我想实现以下情况

  • 我有两台机器(m1,m2),它们正在将日志写入一个文件(~/Desktop/logs)
  • 每次向日志文件添加新行时,我都希望将这些新行发送到中央计算机(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");
    });
    
    机器mcentral 在一个简单的web页面中,我将侦听我们在机器m1和m2中创建的一个名为logging的事件,当捕获此事件时,我们将在html部分显示添加的行(我的示例)

    
    列表
    var socket=io.connect('http://localhost:3000');
    socket.on('logging',函数(数据){
    $('zone_msg')。前置('p>'+data.message+'

    '); })


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

    阅读更多关于感谢快速响应的信息。然而,我认为我不能清楚地表达我的要求。我的M1和M2没有写入日志文件。另一个过程是写入这些文件。M1和M2正在尝试将这些日志(在新到达时)发送到中央计算机。正如我所说,您没有发布源代码。无论如何,您仍然可以使用我的示例,使用检查添加到日志文件的新行的函数替换写入函数,然后在日志事件中发出这一行,并在中央计算机上捕获它,我认为这是一个很好的解决你的问题的方法,谢谢你的建议。我使用rsyslog解决了这个问题。
    <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>