nodejs + express:使http请求等待udp响应
我是一个nodejs web(express)应用程序 ,当有人(UI)向我发送获取请求时,我发送一个udp请求给另一个人,期待他的回复,当udp服务器(我的一部分)收到回复从他那里,我把它发回给httpget请求的那个人。
- 如何使httprequest等待,直到收到一个udp响应?
- 如何设置udp服务器和我的控制器之间的通信/操作方法已得到一个httpget请求。
我已经尝试了“setTimeOut”function,但请求不会等待它。
我从我的控制器/操作调用这个sendMessage:
module.exports.sendMessage = function (ip, port, message) { var msg = new Buffer(message); var dgram = require('dgram'); var client = dgram.createSocket('udp4'); client.send(msg, 0, msg.length, port, ip, function (err, bytes) { if (err) throw err; console.log('UDP message sent to ' + ip + ':' + port); client.close(); }); }
控制器/操作码:
router.get('/getSomething', function (req, res) { //calls send message from here }
从应用程序启动时开始,udp服务器代码始终运行:
server.on('message', function (message, remote) { console.log(remote.address + ':' + remote.port + ' - ' + message + message.length); }
谢谢。
你可以改变你的代码
module.exports.sendMessage = function (ip, port, message, res) { var msg = new Buffer(message); var dgram = require('dgram'); var client = dgram.createSocket('udp4'); client.send(msg, 0, msg.length, port, ip, function (err, bytes) { if (err) throw err; console.log('UDP message sent to ' + ip + ':' + port); }); client.on('message', function(msg, rinfo) { client.close(); res.send(msg); }); }
你可以这样称呼它
router.get('/getSomething', function (req, res) { sendMessage('x', 'z', 'y', res); }