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