我是 node.js 的新手,所以如果这很简单,请原谅我的无知。
我想要做的是设置一个简单的 node.js http 服务器,一个 web 客户端连接到该服务器。我还希望 node.js 服务器充当单独端口上的 UDP 侦听器,在该端口上它将接收来自其他应用程序的 JSON 有效负载。我希望 node.js 服务器将这些 JSON 有效负载立即转发到一个或多个连接的 Web 客户端。
我与最初的谷歌搜索相差甚远:
创建一个简单的 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 在 web 客户端和服务器之间建立实时连接:
//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 的文档...
编辑:感谢修复代码格式的人