gpt4 book ai didi

node.js - Nodejs + Express : make http request wait for udp response

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:26 24 4
gpt4 key购买 nike

我是一个nodejs web(express)应用程序,当某人(UI)向我发送get请求时,我发送udp请求> 发送给另一个人并期待他的回复,当 udp 服务器(我的一部分)收到他的回复时,我将其作为 httpresponse 发送回给我发送 httpget 请求的人。

  1. 如何让 httprequest 等待收到 udp 响应?
  2. 如何设置 udp 服务器和已收到 httpget 请求的 Controller /操作方法之间的通信。

我尝试过“setTimeOut”函数,但请求不等待它。

我从我的 Controller /操作调用此 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();
});
}

Controller /操作代码:

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);
}

关于node.js - Nodejs + Express : make http request wait for udp response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40809983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com