2015-11-20 2 views
0

Просто начать работу на Node.js, у меня есть следующий запрос:node.js EventEmitter: Прослушивание событий через файлы

У меня есть следующее Javascript в моем server.js файл:

=== ======================================

function onRequest(request, response) { 
    var pathname = url.parse(request.url).pathname; 
    route(handle, pathname, response); 
    console.log("Request for " + pathname + " received."); 
} 

var server = http.createServer(onRequest) 
server.listen(8888); 
console.log("Server started") 

============================================ ===================

У меня есть еще один файл js, где я хочу зарегистрировать li stener для события «прослушивания», испускаемого сервером, или, в этом случае, любого события, которое испускается сервером.

Я не могу изменить исходный файл для экспорта объекта сервера.

Есть ли способ достичь моей цели?

ответ

1

Вам нужно либо передать объект сервера в свой другой модуль, как показано ниже, либо вы хотите открыть функцию на своем другом модуле, которую затем можно назначить в качестве родительского модуля в качестве слушателя. В любом случае это сработает. Это просто зависит от того, где вы хотите позвонить .on.

// app.js 

var otherModule = require('./other-module.js'); 

function onRequest(request, response) { 

    var pathname = url.parse(request.url).pathname; 
    route(handle, pathname, response); 

    console.log("Request for " + pathname + " received."); 
} 

var server = http.createServer(onRequest); 
otherModule.init(server); 
server.listen(8888, function() { 
    console.log("Server started"); 
}); // <-- Passing in this callback is a shortcut for defining an event listener for the "listen" event. 

// other-module.js 

exports.init = function (server) { 
    server.on('listen', function() { 
    console.log("listen event fired."); 
    }); 
}; 

В приведенном выше примере установку я два слушателей событий для listen события. Первая зарегистрирована, когда мы передаем функцию обратного вызова в server.listen. Это просто ярлык для выполнения server.on('listen', ...). Второй обработчик событий устанавливается в other-module.js, очевидно :)

Смежные вопросы