我是一个nodejs web(express)应用程序,当某人(UI)向我发送get请求时,我向另一个人发送了udp请求并期望他的答复,而udp服务器(我的一部分)收到答复时从他那里,我将它作为httpresponse发送回给向我发送httpget请求的那个人。
如何使httprequest等待直到收到udp响应?
如何设置udp服务器与我的具有httpget请求的控制器/操作方法之间的通信。
我尝试了“ setTimeOut”功能,但请求不等待它。
我从我的控制器/动作中调用此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);
}