The EventEmitter is the base building block for all
compositions that would need to broadcast data to multiple consumers. Whenever
there is an object that represents the source of several kinds of events,
node.js usually makes the underlying class inherit from EventEmitter.
The EventEmitter implementation makes use of the
observer pattern by providing the ‘on’ function for objects that are interested
in listening to an event. For e.g. you can listen to a specific event by
calling the 'on()' function on your object,
providing the name of the event, as well as a callback closure as the
parameters.
eventEmitterInstance.once('event', callbackSample1); //singular callback registration
//or
eventEmitterInstance.on('event', callBackSample2); //multiple callback
Below given is a sample
server implementation that logs the messages passed as querystring to the
server using the EventEmitter implementation
var http = require('http');
var port = process.env.PORT;
var server = http.createServer(function(request, response){
var eventEmitter = require('events').EventEmitter;
var eventEmitterInstance = new eventEmitter();
var querystring = require('querystring');
var message = querystring.parse(request.url).message;
var callbackSample1 = function(message)
{
console.log('logging from 1st callback function ' + message);
};
var callBackSample2 = function(message)
{
console.log('logging from 2nd callback function ' + message);
};
eventEmitterInstance.once('event',
callbackSample1); //singular callback registration
eventEmitterInstance.emit(message);
eventEmitterInstance.on('event',
callBackSample2); //multiple callback
eventEmitterInstance.emit(message);
eventEmitterInstance.emit(message);
eventEmitterInstance.removeListener('event',
callBackSample2);
response.writeHead(200);
response.end('<html>'+
'<head>'+
'<meta http-equiv="Content-Type"
content="text/html; '+
'charset=UTF-8"
/>'+
'</head>'+
'<body>'+
'<form method="post">' +
'<h1>Messaging sample </h1>' +
'</form>'+
'</body>'+
'</html>');
});
server.listen(port);
console.log('Server started....');
As you can
see, the on()
function returns a reference to the object it belongs to, allowing you to chain
several of such event listeners. If
you're only interested in the first occurrence of an event, you can use the once() function instead.
Finally, you can remove event listeners by using the removeListener function.
No comments:
Post a Comment