Есть такая проблема: стандартный сервер http.createServer()..listen();, внутри него идёт обработка того, что получено разными методами. В одном из случаев мы кидаем данные во внешнюю функцию, внутри которой подключаемся к LDAP и через асинхронный метод search.on() получаем ответ. Вопрос в том, как вернуть ответ клиенту????
Приблизительный код:
http.createServer(function (req, res) {
if (req.method !== undefined && (req.method).toString() === "POST") {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
var body_arr = decodeURIComponent(body).replace(/[+]/g, " ").replace(/[^А-ЯЁа-яё0-9=]/gi, "").split('=');
res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
res.end(LDAP_search(pbdb, body_arr[0], body_arr[1]));
});
}
}).listen("8088");
function LDAP_search(attribute_id, search_str) {
var ldap_user = 'user';
var ldap_pass = 'pass';
var ret_array = [];
var opts = {
filter: "(&(" + attribute_id + "=" + search_str + "*))",
scope: "sub"
};
client.bind(ldap_user, ldap_pass, function (err, res) {
if (err) {
console.log("ERROR: bind error" + err);
}
client.search('DC=mydomain,DC=ru', opts, function (err, search) {
search.on('searchEntry', function (entry) {
var tem_json_obj = {};
tem_json_obj.sn = entry.object.sn || "";
ret_array.push(tem_json_obj);
});
search.on('end', function (err) {
client.unbind(function (err, data) {
if (err) {
console.log(err);
} else {
console.log(ret_array);
}
});
});
});
});
}