尝试实现某个应用程序的即时域搜索,然而,快速服务器只在一次查询后退出。从语义上来说,我觉得有些代码需要重新安排,但我不确定哪些代码。
var ee = new eventEmitter;
var queries = new Array();
ee.on('next', next_search);
function next_search() {
search(queries[a]);
if (queries.length == a) process.exit(0);
++a;
}
function search(x) {
dns.resolve(x, function (err) {
if (!err) {
console.log('bad: ' + x)
ee.emit('next')
} else {
console.log('good: ' + x)
ee.emit('next')
}
});
}
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.post('/search', function (req, res) {
domain = req.param('domain');
queries.push(domain);
search(queries[queries.length]);
});
var a = 0;
http.createServer(app).listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});
答案 0 :(得分:2)
我刚刚在你的代码中看到了这一行
if (queries.length == a) process.exit(0);
您初始化了一个= 0,当第一次执行next_search()
时,应用会退出。
答案 1 :(得分:0)
你没有开始表达。
http.createServer
接受一个响应函数,但你给它app,这是一个未定义的函数。
我认为app应该是require('express')()
中的快速对象。
请参阅http:
的http.createServer文档http://www.nodejs.org/api/http.html#http_http_createserver_requestlistener
请参阅
中的express.js文档尝试这样的事情:
var a = 0;
var ee = new eventEmitter; // pretty sure this is wrong, but I will leave that to you.
var queries = [];
ee.on('next', next_search);
function next_search() {
search(queries[a]);
if(queries.length == a) process.exit(0);
++a;
}
function search(x) {
dns.resolve(x, function (err) {
if (!err) {
console.log('bad: ' + x)
ee.emit('next');
} else {
console.log('good: ' + x)
ee.emit('next');
}
});
}
var express = require('express');
var app = express();
app.post('/search', function(req, res) {
domain = req.param('domain');
queries.push(domain);
search(queries[queries.length]);
});
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
}
app.listen(8080); // whatever port you want to bind to.