node.js прослушивает UDP и пересылает подключенные веб-клиенты http
Я новичок в node.js, так что прости невежество, если это просто.
Я хочу настроить простой http-сервер node.js, к которому подключается веб-клиент. Я также хочу, чтобы сервер node.js действовал в качестве прослушивателя UDP на отдельном порту, на котором он будет получать полезную нагрузку JSON от какого-либо другого приложения. Я хочу, чтобы сервер node.js немедленно пересылал эти полезные данные JSON одному или нескольким подключенным веб-клиентам.
Я получил это далеко от начального поиска в Google:
Создайте простой http-сервер node.js, который отвечает статической 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, транслируемые подключенным клиентам socket.io. Или, возможно, есть более простой и элегантный способ сделать это? Я обнаружил, что документация для socket.io отсутствует ...
РЕДАКТИРОВАТЬ: спасибо человеку, который исправил форматирование кода