1
我正在编写一个域搜索应用程序,我只是简单地检查.com域的可用性。它的基本工作正常,问题是当我有多个请求,特别是多个搜索()的它给我的多个nodejs请求实时搜索
{ [Error: connect Unknown system errno 37]
code: 'Unknown system errno 37',
errno: 'Unknown system errno 37',
syscall: 'connect' }
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect Unknown system errno 37
at errnoException (net.js:863:11)
at connect (net.js:726:19)
at net.js:804:9
at asyncCallback (dns.js:68:16)
at Object.onanswer [as oncomplete] (dns.js:121:9)
一个错误,我需要更改或添加什么,使工作?三项赛?排队?
(编辑为DC5)
var searches = ['test1', 'test2', 'test3'];
search(searches.shift());
function chkconnections(z) {
if (connections <= 0) {
if (searches.length >= 1) {
process.nextTick(function() {
search(searches.shift());
});
}
}
}
function search(x) {
dotCom.connect(port, host, function() {
dotCom.write('domain ' + x + '.com\r\n');
count++;
connections++;
});
dotCom.on('data', function(data) {
c++;
if (c == 2) {
dotComStatus = data.split('\n')[1];
dotCom.on('close', function() {
connections--;
chkconnections();
count--;
if (dotComStatus.indexOf("No match for domain") > -1)
{
console.log(x + ".com is available");
} else {
console.log(x + ".com is taken");
}
});
}
});
}
如果我在搜索功能中为.net和.org添加一个.connect,使得它每次运行该函数都有三个连接,并且我有多个搜索,它会抛出一个Error:read ECONNRESET。解决这个问题的最佳做法是什么? – archytect
可能有许多不同的方法来做到这一点。一种简单的方法是将查询放入数组中,然后在完成时调用search(arr。shift()),直到数组为空。 (查看更新后的代码) – dc5
最后一条评论回答了编辑前的问题。不知道你的代码在你尝试时看起来是什么样的,但是听起来好像你只是把它放入了它之前(或类似的)的状态。没有必要尝试在搜索功能中做更多的工作。稍微重构一下代码,以便您可以使用不同的顶级域名调用搜索功能。 – dc5