如何在Node.js中将UDP广播结果输出到http服务器?

我试图redirect一个简单的UDP广播结果,其中包含几个来自不同设备的(2秒)延迟消息,并将结果呈现为http响应。 下面的代码运行良好,我可以看到收集到的广播消息与console.log,但networking响应是空的。 如何正确实现这个?

var dgram = require("dgram"); var http = require('http'); function broadcast(callback) { var data = ''; var server = dgram.createSocket("udp4"); server.on("message", function (message, rinfo) { data += message; }) server.bind(11000); var socket = dgram.createSocket("udp4"); socket.bind(); socket.setBroadcast(true); socket.send(Buffer([3]), 0, 1, 11001, '255.255.255.255', function(err, bytes) { socket.close(); }); // dealy to collect all messages in 2 sec setTimeout(function () { callback(data); }, 2000); } http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); broadcast(function(data) { res.write(data); console.log(data); }); res.end(); }).listen(6969, "0.0.0.0"); console.log('HTTP server running at http://0.0.0.0:6969/') 

您在发送数据之前调用res.end() 。 将res.end()移到您的callback中。

 http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); broadcast(function(data) { res.write(data); console.log(data); res.end(); }); }).listen(6969, "0.0.0.0");