Node.js 带有子进程节点的JavaScript eventsource

Node.js 带有子进程节点的JavaScript eventsource,node.js,child-process,spawn,tcpdump,eventsource,Node.js,Child Process,Spawn,Tcpdump,Eventsource,我在几篇文章中发现了一个代码,该代码使用EventSources向浏览器发送每个ping,这些ping是通过child_进程中的事件实时完成的。我想尝试使用tcpdump,但它没有相同的效果,它不发送数据,甚至在运行spawn的开始处放一个console.log也没有显示任何效果。有没有办法把每个包裹一个一个地寄出去?通过这种方式,我可以处理数据并将其显示在我正在设计的GUI中。问题不在于权限,因为我在root中运行它 著名的代码如下(很抱歉不知道代码的作者,我在很多地方都看到过,我不知道谁会是

我在几篇文章中发现了一个代码,该代码使用EventSources向浏览器发送每个ping,这些ping是通过child_进程中的事件实时完成的。我想尝试使用tcpdump,但它没有相同的效果,它不发送数据,甚至在运行spawn的开始处放一个console.log也没有显示任何效果。有没有办法把每个包裹一个一个地寄出去?通过这种方式,我可以处理数据并将其显示在我正在设计的GUI中。问题不在于权限,因为我在root中运行它

著名的代码如下(很抱歉不知道代码的作者,我在很多地方都看到过,我不知道谁会是作者)

后端:

let cp = require("child_process"),
express = require("express"),
app = express();

app.use(express.static(__dirname));
const cors = require('cors');

app.use(cors());
app.get('/ping', function(req, res){
    res.writeHead(200, { "Content-Type": "text/event-stream",
                         "Cache-control": "no-cache" });

    let spw = cp.spawn('ping', ['-c', '100', '80.80.80.80']), //ping works
    //let spw = cp.spawn('tcpdump', ['-c','5']), <-- how can I do ? it not shows nothing
    str = "";

    spw.stdout.on('data', function (data) {
        str += data.toString();
        
        // just so we can see the server is doing something
        console.log(data + ''); // I tried this log but nothing show with tpcdump command

        // Flush out line by line.
        let lines = str.split("\n");
        for(let i in lines) {
            if(i == lines.length - 1) {
                str = lines[i];
            } else{
                // Note: The double-newline is *required*
                res.write('data: ' + lines[i] + "\n\n");
            }
        }
        
    });

   
});

app.listen(4000);
let cp=require(“子进程”),
快递=要求(“快递”),
app=express();
应用程序使用(express.static(_dirname));
const cors=需要(“cors”);
应用程序使用(cors());
应用程序获取('/ping',函数(req,res){
res.writeHead(200,{“内容类型”:“文本/事件流”,
“缓存控制”:“无缓存”});
让spw=cp.spawn('ping',['-c','100','80.80.80']),//ping有效
//设spw=cp.spawn('tcpdump',['-c','5']),
<!DOCTYPE Html>
<html> 
<body>
   <ul id="eventlist"> </ul>

   <script>              
    var eventList = document.getElementById("eventlist");
    var evtSource = new EventSource("http://localhost:4000/ping");

    var newElement = document.createElement("li");
    newElement.innerHTML = "Messages:";
    eventList.appendChild(newElement);


    evtSource.onmessage = function(e) {
        console.log("received event");
        console.log(e);
        var newElement = document.createElement("li");

        newElement.innerHTML = "message: " + e.data;
        eventList.appendChild(newElement);
    };      

    evtSource.onerror = function(e) {
        console.log("EventSource failed.");
        console.log(e);
    };

    console.log(evtSource);

    </script>

</body>
</html>