2016-07-01 5 views
1

は、だから、ノードHTTP GETリクエストので、同じように作ることができますか?与えられたDNSが複数のIPに解決された場合、どのIPアドレスを使用するかをノードHTTP libはどのように決定するのですか?ノードHTTP解像度

dig +short stackoverflow.com 
151.101.129.69 
151.101.1.69 
151.101.193.69 
151.101.65.6 

node request LIBが異なるん:複数のIPアドレスによって

は、私のような何かを意味ですか?ノード6. XXで

+0

あなたは、「DNSが複数のIPアドレスに解決される」とはどういう意味ですか? – dandavis

答えて

1

あなたreqオブジェクトが持っている必要がありますconnectionオブジェクトがあり、接続先のサーバーのリモートアドレスを持ちます。もちろん

req.connection.remoteAddress 

、あなたが実際に接続しているので、私はちょうどあなたが必要なものを持っているconnectイベントを使用するまで待つ必要があります。未テストが、これを試してみてください。

req.on('connect', (res, socket, head) => { 
    console.log(socket.remoteAddress); 
}); 

https://nodejs.org/api/net.html#net_socket_remoteaddress

+0

ありがとう、それは非常に役に立ちます。 – blunrib

0

限り私は理解して、それはあまりにもダウンしています:

  1. のhttpモジュールは
  2. ネットモジュールは
  3. DNSモジュールは、ネイティブ
  4. を使用して使用しています使用していますモジュールlibuv#getaddrinfohttp://docs.libuv.org/en/v1.x/dns.html#c.uv_getaddrinfo

、具体的にIPを使用するように質問: https://github.com/nodejs/node/blob/cd439465cc8b408eb88822c7695def611acfaaf7/lib/dns.js#L82

ようになり、非常に簡単なアルゴリズム:「複数のIPアドレスが存在する場合は、最初のものを取る」:)

+0

これで問題は解決しません。複数のDNSルックアップが異なる応答を引き起こす可能性があります。 – Brad

+0

ありがとう!情報源は非常に説明しています。それは悪いアルゴリズムです:( – blunrib