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

标签 node.js express udp

我是一个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/

相关文章:

node.js - 将所有属性标记为是否需要 Joi

java - 如何区分同一 IP 地址上的两个不同 UDP 客户端?

node.js - 在 express 中缓存响应

html - 如果在 Angular 中将 sourcemap 设置为 false 会发生什么

json - 如何在 package.json 的安装前/安装后脚本中调用多个调用

node.js - 如何使用NodeJS和Docker Compose处理卷?

node.js - Mongoose 聚合 $sum 返回零

node.js - AngularJS 和 ExpressJS 路由问题?

python - 无法使用 Python 读取服务器上的 UDP 数据包

networking - 如何测试您的客户端服务器程序