nodejs + express:使http请求等待udp响应

我是一个nodejs web(express)应用程序 ,当有人(UI)向我发送获取请求时,我发送一个udp请求给另一个人,期待他的回复,当udp服务器(我的一部分)收到回复从他那里,我把它发回给httpget请求的那个人。

  1. 如何使httprequest等待,直到收到一个udp响应?
  2. 如何设置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); }