私はNode.jsの新機能です。node.dns.resolveNs関数を使用して問題が発生しています。Node.js DNSルックアップ - タイムアウトを設定するには?
一部のドメインは完全に停止しており、応答を取得するのに約1分かかります。通常は「queryNs ETIMEOUT」です。もっと短い時間、例えば10秒に設定する方法はありますか?
私はNode.jsの新機能です。node.dns.resolveNs関数を使用して問題が発生しています。Node.js DNSルックアップ - タイムアウトを設定するには?
一部のドメインは完全に停止しており、応答を取得するのに約1分かかります。通常は「queryNs ETIMEOUT」です。もっと短い時間、例えば10秒に設定する方法はありますか?
私は、関数呼び出しに直接タイムアウトを設定する方法がわからないですが、あなたは自分でタイミングを処理するために呼び出しの周りに小さなラッパーを作成することができます。
var dns = require('dns');
var nsLookup = function(domain, timeout, callback) {
var callbackCalled = false;
var doCallback = function(err, domains) {
if (callbackCalled) return;
callbackCalled = true;
callback(err, domains);
};
setTimeout(function() {
doCallback(new Error("Timeout exceeded"), null);
}, timeout);
dns.resolveNs(domain, doCallback);
};
nsLookup('stackoverflow.com', 1000, function(err, addresses) {
console.log("Results for stackoverflow.com, timeout 1000:");
if (err) {
console.log("Err: " + err);
return;
}
console.log(addresses);
});
nsLookup('stackoverflow.com', 1, function(err, addresses) {
console.log("Results for stackoverflow.com, timeout 1:");
if (err) {
console.log("Err: " + err);
return;
}
console.log(addresses);
});
上記のスクリプトの出力:
Results for stackoverflow.com, timeout 1:
Err: Error: Timeout exceeded
Results for stackoverflow.com, timeout 1000:
[ 'ns1.serverfault.com',
'ns2.serverfault.com',
'ns3.serverfault.com' ]
本当に、私はそれがとても好きでした、私はコールバックが一般的なことができるようにそれを適応しています、そして、それはカスタムタイムアウトで任意のネットワークコールを呼び出すきちんとした方法になることができます... – Merc
あなたは(実際にタイムアウトしないので、これは単なるエミュレーションです)。 – aymericbeaumet
ネイティブタイムアウトや他のさまざまなオプションをサポートしていNode.jsのdns.resolve*
使用C-アールライブラリーの下に、。残念ながら、Node.jsはこれらの調整パラメータを公開しませんが、そのうちのいくつかはRES_OPTIONS
環境変数で設定できます。
例:RES_OPTIONS='ndots:3 retrans:1000 retry:3 rotate' node server.js
ndots
:ARES_OPT_TIMEOUTMSretry
と同じ:ARES_OPT_TRIESrotate
と同じ:ARES_OPT_ROTATE参照の男と同じARES_OPT_NDOTS
retrans
と同じa各オプションの意味の詳細については、res_init_options(3)を参照してください。http://manpages.ubuntu.com/manpages/zesty/man3/ares_init_options.3.html
npmを検索しています。タイムアウトもサポートするhttps://github.com/tjfontaine/node-dnsも見つかりました.... – Alfred