为指定事件注册一个。
语法:
 代码如下:
emitter.on(event, listener)
emitter.addListener(event, listener)
接收参数:
event (string) 事件类型
listener (function) 触发事件时的回调函数
例子:
 代码如下:
server.on('connection', function (stream) {
 console.log('someone connected!');
});
源码:
 代码如下:
EventEmitter.prototype.addListener = function(type, listener) {
 var m;
 if (!util.isFunction(listener))
 throw TypeError('listener must be a function');
 if (!this._events)
 this._events = {};
 // To avoid recursion in the case that type === "newListener"! Before
 // adding it to the listeners, first emit "newListener".
 if (this._events.newListener)
 this.emit('newListener', type,
 util.isFunction(listener.listener) ?
 listener.listener : listener);
 if (!this._events[type])
 // Optimize the case of one listener. Don't need the extra array object.
 this._events[type] = listener;
 else if (util.isObject(this._events[type]))
 // If we've already got an array, just append.
 this._events[type].push(listener);
 else
 // Adding the second element, need to change to array.
 this._events[type] = [this._events[type], listener];
 // Check for listener leak
 if (util.isObject(this._events[type]) && !this._events[type].warned) {
 var m;
 if (!util.isUndefined(this._maxListeners)) {
 m = this._maxListeners;
 } else {
 m = EventEmitter.defaultMaxListeners;
 }
 if (m && m > 0 && this._events[type].length > m) {
 this._events[type].warned = true;
 console.error('(node) warning: possible EventEmitter memory ' +
 'leak detected. %d listeners added. ' +
 'Use emitter.setMaxListeners() to increase limit.',
 this._events[type].length);
 console.trace();
 }
 }
 return this;
};