2016-11-25 25 views
1

私はnodejsウェブ(表現)アプリケーション誰か(UI)は私にGETリクエストを送信したとき、私は別の男にUDP要求を送信彼からの返信を期待して、udpサーバー(私の一部)が彼からの返信を受け取ったとき、私はhttpgetリクエストを送った人にhttpresponseとしてそれを送り返しました。nodejs +表現:UDP応答のHTTP要求を待機させる

  1. udp応答が受信されるまでhttprequestを待機させる方法はありますか。
  2. 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); 
} 

ありがとうございました。

+0

のようにそれを呼び出すことができますか?どのようにudp通話をしていますか? –

+0

*コードを追加しました* – user1179299

答えて

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

ありがとうございます。しかし、私はそれをうまく説明していないと思います。 私はudpメッセージを送信した人からudp(応答)メッセージを受け取ったときにres.send()を送信する必要があります。 私はudpを通していくつかのデータを求めています。私がそれを受け取ったら、私はそれを他のシステムに送る必要があります。 – user1179299

+0

@ user1179299申し訳ありません。私はコードを更新し、必要なものがあるかどうかを確認します –

関連する問題