如何将UDP广播结果输出到Node.js中的http服务器?
我将重定向一个简单的UDP广播结果,其中包含来自不同设备的几个延迟(2秒)消息,并将结果呈现为http响应。下面的代码运行良好,我可以通过console.log查看收集的广播消息,但web响应是空的。如何正确实施这一点如何将UDP广播结果输出到Node.js中的http服务器?,node.js,udp,broadcast,Node.js,Udp,Broadcast,我将重定向一个简单的UDP广播结果,其中包含来自不同设备的几个延迟(2秒)消息,并将结果呈现为http响应。下面的代码运行良好,我可以通过console.log查看收集的广播消息,但web响应是空的。如何正确实施这一点 var dgram = require("dgram"); var http = require('http'); function broadcast(callback) { var data = ''; var server = dgram.cre
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()
移动到回调中
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");
您是否连接到6969端口上的web服务器或6969端口上的1337。1337是一个错误的标签