Къде са дефинирани слушателите на събития в npm пакети?

Работя върху кодирането на IRC бот в nodejs като проект за обучение. Често попадам на слушатели на събития като следното:

bot.addListener("message", function(from, to, text, message) {
.
.
.
});

Проблем: Търсих навсякъде обяснение къде е дефинирано/обяснено това addListener. нищо не намирам Той е от пакета irc в npm и дори след търсене във всеки github файл в източника на пакета irc, не намирам екземпляр на низа addListener.

Какво става тук? Как да разбера как работи този addListener, какъв е списъкът с IRC събития (освен само "съобщение") и т.н.?


person George    schedule 08.01.2015    source източник


Отговори (1)


Вижте тук http://nodejs.org/docs/latest/api/events.html#events_emitter_addlistener_event_listener

emitter.addListener(събитие, слушател)

emitter.on(събитие, слушател)

Добавя слушател в края на масива слушатели за посоченото събитие. Не се правят проверки дали слушателят вече е добавен. Множество обаждания, предаващи една и съща комбинация от събитие и слушател, ще доведат до добавяне на слушателя многократно.

server.on('connection', function (stream) {   console.log('someone
connected!'); }); Returns emitter, so calls can be chained.

Обикновено се добавя към обект с http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor

util.inherits(constructor, superConstructor)# Наследява методите на прототипа от един конструктор в друг. Прототипът на конструктора ще бъде настроен на нов обект, създаден от superConstructor.

Като допълнително удобство, superConstructor ще бъде достъпен чрез свойството constructor.super_.

var util = require("util"); var events = require("events");

function MyStream() {
    events.EventEmitter.call(this); }

util.inherits(MyStream, events.EventEmitter);

MyStream.prototype.write = function(data) {
    this.emit("data", data); }

var stream = new MyStream();

console.log(stream instanceof events.EventEmitter); // true console.log(MyStream.super_ === events.EventEmitter); // true

stream.on("data", function(data) {
    console.log('Received data: "' + data + '"'); }) stream.write("It works!"); // Received data: "It works!"

За вашия irc-bot можете да намерите thid sting на https://github.com/martynsmith/node-irc/blob/master/lib%2Firc.js ред 603

util.inherits(Client, process.EventEmitter);

и събитие, задействано с конструкция като

self.emit('connect'); // same file  L:665
person Vasiliy Vanchuk    schedule 08.01.2015