我是 nodejs网络(快速)应用,当某人(UI)向我发送获取请求时,我发送udp请求对另一个人,并期待他的回复,当udp服务器(我的一部分)收到他的回复时,我把它作为httpresponse发送回给我发送http请求的人。
我尝试了'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);
}
感谢。
答案 0 :(得分:1)
您可以将代码更改为
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);
}