Я новичок в node.js, поэтому прощайте невежество, если это просто.node.js прослушивает UDP и пересылает подключенные http-клиенты сети
Что я хочу сделать, это настроить простой HTTP-узел node.js, к которому подключается веб-клиент. Я также хочу, чтобы сервер node.js выступал в качестве UDP-прослушивателя на отдельном порту, на котором он будет получать полезную нагрузку JSON из другого приложения. Я хочу, чтобы сервер node.js немедленно перенаправил эти полезные данные JSON одному или нескольким подключенным веб-клиентам.
Я получил это далеко от некоторого начального Googling вокруг:
Создания простого Node.js сервера HTTP, который реагирует со статической HTML страницы:
//Initialize the HTTP server on port 8080, serve the index.html page var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-type': 'text/html'}); res.end(fs.readFileSync(__dirname + '/index.html')); }).listen(8080, function() { console.log('Listening at: 127.0.0.1 8080'); } );
Инициализировать UDP сервера на отдельный порт:
//Initialize a UDP server to listen for json payloads on port 3333 var srv = dgram.createSocket("udp4"); srv.on("message", function (msg, rinfo) { console.log("server got: " + msg + " from " + rinfo.address + ":" + rinfo.port); io.sockets.broadcast.emit('message', 'test'); //stream.write(msg); //socket.broadcast.emit('message',msg); }); srv.on("listening", function() { var address = srv.address(); console.log("server listening " + address.address + ":" + address.port); }); srv.bind(5555);
Использование socket.io для установки лиш живая связь между веб-сервером и клиентом:
//this listens for socket messages from the client and broadcasts to all other clients var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { socket.on('message', function (msg) { console.log('Message Received: ', msg.data.skeletons[0] ? msg.data.skeletons[0].skeleton_id : ''); socket.broadcast.emit('message', msg); } ); });
Я думаю, что моя проблема, я не знаю, как соединить 2 и 3, чтобы получить принятые UDP-пакеты, транслируемые на подключенный сокет. io клиентов. Или, может быть, есть более простой и элегантный способ сделать это? Я нашел в документации по socket.io не хватает ...
EDIT: благодаря человеку, что фиксированный код форматирования
Спасибо, это помогло мне достичь только то, что я хотел :) – kufudo
@generalhenry Вы можете исправить код на [работоспособной] (http://runnable.com/ UXsar5hEezgaAACJ), так как мне нужно посмотреть, как вы передаете данные UDP на этом сервере? И на каком «порту»? – Ravi
udp находится на случайном доступном порту (который является значением по умолчанию, если вы не указываете, где привязываться). Затем я обращаюсь к нему с помощью srv.address(), который возвращает данные адреса. (запускается исправление) – generalhenry