Поделиться через


Client class

Клиент службы Центра Интернета вещей используется для взаимодействия с устройствами через Центр Интернета вещей Azure. Он позволяет пользователю ПАКЕТА SDK:

  • отправка облачных устройств (также известных как команды) на устройства: команды помещаются в Центр Интернета вещей и передаются асинхронно, только если устройство подключено. Только 50 команд могут быть помещены в очередь на каждое устройство.
  • вызов прямых методов на устройствах (которые будут работать только в том случае, если устройство подключено в данный момент: это синхронный способ взаимодействия с устройством).
  • прослушивание сообщений обратной связи, отправленных устройствами для предыдущих команд.
  • прослушивает уведомления о отправке файлов с устройств.

Пользователи должны создавать новые экземпляры Client путем вызова одного из методов фабрики, fromConnectionString или fromSharedAccessSignatureдля создания клиента службы Центра Интернета вещей.

Extends

EventEmitter

Унаследованные свойства

captureRejections

Значение: логическое

Измените параметр captureRejections по умолчанию для всех новых объектов EventEmitter.

captureRejectionSymbol

Значение: Symbol.for('nodejs.rejection')

Узнайте, как написать настраиваемый rejection handler.

defaultMaxListeners

По умолчанию для любого одного события можно зарегистрировать максимум 10 прослушивателей. Это ограничение можно изменить для отдельных экземпляров EventEmitter с помощью метода emitter.setMaxListeners(n). Чтобы изменить значение по умолчанию для всех экземпляровEventEmitter, можно использовать свойство events.defaultMaxListeners. Если это значение не является положительным числом, создается RangeError.

Будьте осторожны при настройке events.defaultMaxListeners, так как изменение влияет на всехEventEmitter экземпляров, включая созданные до внесения изменений. Однако вызов emitter.setMaxListeners(n) по-прежнему имеет приоритет над events.defaultMaxListeners.

Это не трудное ограничение. Экземпляр EventEmitter позволит добавлять больше прослушивателей, но выводит предупреждение трассировки в stderr, указывающее, что обнаружена "возможная утечка памяти EventEmitter". Для любого одного EventEmitterможно использовать методы emitter.getMaxListeners() и emitter.setMaxListeners(), чтобы временно избежать этого предупреждения:

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});

Флаг командной строки --trace-warnings можно использовать для отображения трассировки стека для таких предупреждений.

Выдающееся предупреждение можно проверить с помощью process.on('warning') и иметь дополнительные emitter, typeи count свойства, ссылающиеся на экземпляр обработчика событий, имя события и число подключенных прослушивателей соответственно. Для свойства name задано значение 'MaxListenersExceededWarning'.

errorMonitor

Этот символ должен использоваться для установки прослушивателя только для мониторинга событий 'error'. Прослушиватели, установленные с помощью этого символа, вызываются перед вызовом обычных прослушивателей 'error'.

Установка прослушивателя с помощью этого символа не изменяет поведение после создания события 'error'. Поэтому процесс по-прежнему завершится сбоем, если не установлен обычный прослушиватель 'error'.

Методы

close()
close(IncomingMessageCallback<Disconnected>)

Закрывает подключение к Центру Интернета вещей.

fromConnectionString(string, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданной строки подключения с помощью транспорта по умолчанию (Amqp) или одного, указанного во втором аргументе.

fromSharedAccessSignature(string, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданной подписанной url-адреса с помощью транспорта по умолчанию (Amqp) или указанного во втором аргументе.

fromTokenCredential(string, TokenCredential, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданного токена AzureCredential с помощью транспорта по умолчанию (Amqp) или одного, указанного во втором аргументе.

getFeedbackReceiver()
getFeedbackReceiver(IncomingMessageCallback<ServiceReceiver>)

Возвращает объект AmqpReceiver, который выдает события при получении клиентом новых сообщений обратной связи.

getFileNotificationReceiver()
getFileNotificationReceiver(IncomingMessageCallback<ServiceReceiver>)

Возвращает объект AmqpReceiver, который выдает события при получении клиентом новых уведомлений о отправке файлов.

invokeDeviceMethod(string, DeviceMethodParams)
invokeDeviceMethod(string, DeviceMethodParams, IncomingMessageCallback<any>)

Вызывает метод на определенном устройстве или модуле.

invokeDeviceMethod(string, string, DeviceMethodParams)
invokeDeviceMethod(string, string, DeviceMethodParams, IncomingMessageCallback<any>)
open()
open(IncomingMessageCallback<Connected>)

Открывает подключение к Центру Интернета вещей.

send(string, Message | BufferConvertible)
send(string, Message | BufferConvertible, IncomingMessageCallback<MessageEnqueued>)

Отправляет сообщение на устройство.

setRetryPolicy(RetryPolicy)

Задайте политику, используемую клиентом для повторных сетевых операций.

Наследуемые методы

addAbortListener(AbortSignal, (event: Event) => void)

Прослушивает событие abort на предоставленном signal.

Прослушивание события abort сигналов прерывания небезопасно и может привести к утечкам ресурсов, так как другая сторонняя сторона с сигналом может вызывать e.stopImmediatePropagation(). К сожалению, Node.js не может изменить это, так как это нарушает веб-стандарт. Кроме того, исходный API упрощает удаление прослушивателей.

Этот API позволяет безопасно использовать AbortSignalв Node.js API путем решения этих двух проблем, прослушивая событие таким образом, что stopImmediatePropagation не препятствует запуску прослушивателя.

Возвращает одноразовый объект, чтобы его можно было отменить с более легкой подписки.

import { addAbortListener } from 'node:events';

function example(signal) {
  let disposable;
  try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
    });
  } finally {
    disposable?.[Symbol.dispose]();
  }
}
addListener<K>(string | symbol, (args: any[]) => void)

Псевдоним для emitter.on(eventName, listener).

emit<K>(string | symbol, AnyRest)

Синхронно вызывает каждый из прослушивателей, зарегистрированных для события с именем eventName, в том порядке, в который они были зарегистрированы, передавая предоставленные аргументы каждому из них.

Возвращает true, если событие имело прослушиватели, false в противном случае.

import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();

// First listener
myEmitter.on('event', function firstListener() {
  console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
  console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
  const parameters = args.join(', ');
  console.log(`event with parameters ${parameters} in third listener`);
});

console.log(myEmitter.listeners('event'));

myEmitter.emit('event', 1, 2, 3, 4, 5);

// Prints:
// [
//   [Function: firstListener],
//   [Function: secondListener],
//   [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
eventNames()

Возвращает массив, в котором перечислены события, для которых у поставщика зарегистрированы прослушиватели. Значения в массиве — это строки или Symbols.

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
getEventListeners(EventEmitter<DefaultEventMap> | EventTarget, string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName.

Для EventEmitterэто ведет себя точно так же, как вызов .listeners на эмитере.

Для EventTargetэто единственный способ получить прослушиватели событий для целевого объекта события. Это полезно для отладки и диагностики.

import { getEventListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
}
getMaxListeners()

Возвращает текущее значение максимального прослушивателя для EventEmitter, заданного emitter.setMaxListeners(n) или по умолчанию для defaultMaxListeners.

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

Возвращает текущее максимальное количество прослушивателей.

Для EventEmitterэто ведет себя точно так же, как вызов .getMaxListeners на эмитере.

Для EventTargetэто единственный способ получить максимальное число прослушивателей событий для целевого объекта событий. Если число обработчиков событий в одном объекте EventTarget превышает максимальное число, событие EventTarget выводит предупреждение.

import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  console.log(getMaxListeners(ee)); // 10
  setMaxListeners(11, ee);
  console.log(getMaxListeners(ee)); // 11
}
{
  const et = new EventTarget();
  console.log(getMaxListeners(et)); // 10
  setMaxListeners(11, et);
  console.log(getMaxListeners(et)); // 11
}
listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

Метод класса, возвращающий количество прослушивателей для заданного eventName зарегистрированного в заданном emitter.

import { EventEmitter, listenerCount } from 'node:events';

const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
listenerCount<K>(string | symbol, Function)

Возвращает число прослушивателей, прослушивающих событие с именем eventName. Если указана listener, он возвращает количество раз, когда прослушиватель найден в списке прослушивателей события.

listeners<K>(string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName.

server.on('connection', (stream) => {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
off<K>(string | symbol, (args: any[]) => void)

Псевдоним для emitter.removeListener().

on(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterIteratorOptions)
import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
});

for await (const event of on(ee, 'foo')) {
  // The execution of this inner block is synchronous and it
  // processes one event at a time (even with await). Do not use
  // if concurrent execution is required.
  console.log(event); // prints ['bar'] [42]
}
// Unreachable here

Возвращает AsyncIterator, которая выполняет итерацию событий eventName. Если EventEmitter выдает 'error'. При выходе из цикла удаляются все прослушиватели. value, возвращаемые каждой итерацией, — это массив, состоящий из аргументов создаваемых событий.

Для отмены ожиданий событий можно использовать AbortSignal:

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());

Используйте параметр close, чтобы указать массив имен событий, который завершит итерацию:

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
  ee.emit('close');
});

for await (const event of on(ee, 'foo', { close: ['close'] })) {
  console.log(event); // prints ['bar'] [42]
}
// the loop will exit after 'close' is emitted
console.log('done'); // prints 'done'
on(EventTarget, string, StaticEventEmitterIteratorOptions)
on<K>(string | symbol, (args: any[]) => void)

Добавляет функцию listener в конец массива прослушивателей для события с именем eventName. Проверка не выполняется, чтобы узнать, добавлена ли listener. Несколько вызовов, проходящих одно и то же сочетание eventName и listener, приведет к добавлению listener и вызову несколько раз.

server.on('connection', (stream) => {
  console.log('someone connected!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод emitter.prependListener() можно использовать в качестве альтернативы для добавления прослушивателя событий в начало массива прослушивателей.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)

Создает Promise, которая выполняется, когда EventEmitter выдает заданное событие или отклоняется, если EventEmitter выдает 'error' во время ожидания. Promise будет разрешаться с массивом всех аргументов, создаваемых заданному событию.

Этот метод намеренно универсальный и работает с веб-платформой интерфейсом EventTarget, который не имеет специальной семантики событий'error' и не прослушивает событие 'error'.

import { once, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

process.nextTick(() => {
  ee.emit('myevent', 42);
});

const [value] = await once(ee, 'myevent');
console.log(value);

const err = new Error('kaboom');
process.nextTick(() => {
  ee.emit('error', err);
});

try {
  await once(ee, 'myevent');
} catch (err) {
  console.error('error happened', err);
}

Специальная обработка события 'error' используется только в том случае, если events.once() используется для ожидания другого события. Если events.once() используется для ожидания самого события "error'", он обрабатывается как любое другое событие без специальной обработки:

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.error('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

AbortSignal можно использовать для отмены ожидания события:

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
once(EventTarget, string, StaticEventEmitterOptions)
once<K>(string | symbol, (args: any[]) => void)

Добавляет функцию однократного для события с именем . При следующем запуске eventName этот прослушиватель удаляется и вызывается.

server.once('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод emitter.prependOnceListener() можно использовать в качестве альтернативы для добавления прослушивателя событий в начало массива прослушивателей.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
prependListener<K>(string | symbol, (args: any[]) => void)

Добавляет функцию listener в начала массива прослушивателей для события с именем eventName. Проверка не выполняется, чтобы узнать, добавлена ли listener. Несколько вызовов, проходящих одно и то же сочетание eventName и listener, приведет к добавлению listener и вызову несколько раз.

server.prependListener('connection', (stream) => {
  console.log('someone connected!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

prependOnceListener<K>(string | symbol, (args: any[]) => void)

Добавляет функцию однократного для события с именем в начиная массива прослушивателей. При следующем запуске eventName этот прослушиватель удаляется, а затем вызывается.

server.prependOnceListener('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

rawListeners<K>(string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName, включая любые оболочки (например, созданные .once()).

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));

// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];

// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();

// Logs "log once" to the console and removes the listener
logFnWrapper();

emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');

// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
removeAllListeners(string | symbol)

Удаляет все прослушиватели или те из указанных eventName.

Не рекомендуется удалять прослушиватели, добавленные в другое место в коде, особенно если экземпляр EventEmitter был создан другим компонентом или модулем (например, сокетами или потоками файлов).

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

removeListener<K>(string | symbol, (args: any[]) => void)

Удаляет указанный listener из массива прослушивателя для события с именем eventName.

const callback = (stream) => {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() удаляет в большинстве случаев один экземпляр прослушивателя из массива прослушивателя. Если один прослушиватель был добавлен несколько раз в массив прослушивателя для указанного eventName, removeListener() необходимо вызывать несколько раз, чтобы удалить каждый экземпляр.

После создания события все прослушиватели, подключенные к нему во время создания, вызываются в порядке. Это означает, что все вызовы removeListener() или removeAllListeners()после отправки и до завершения выполнения последнего прослушивателя не будут удалять их изemit() во время выполнения. Последующие события ведут себя должным образом.

import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

const callbackA = () => {
  console.log('A');
  myEmitter.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
//   A

Так как прослушиватели управляются с помощью внутреннего массива, вызывая это приведет к изменению индексов позиций любого прослушивателя, зарегистрированного после удаленного прослушивателя. Это не повлияет на порядок вызова прослушивателей, но это означает, что все копии массива прослушивателя, возвращенные методом emitter.listeners(), должны быть воссозданы.

Если одна функция была добавлена в обработчик несколько раз для одного события (как в примере ниже), removeListener() удалит последний добавленный экземпляр. В примере прослушивателя once('ping') удаляется:

import { EventEmitter } from 'node:events';
const ee = new EventEmitter();

function pong() {
  console.log('pong');
}

ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);

ee.emit('ping');
ee.emit('ping');

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

setMaxListeners(number)

По умолчанию EventEmitterбудет выводить предупреждение, если для определенного события добавляются более 10 прослушивателей. Это полезное значение по умолчанию, которое помогает находить утечки памяти. Метод emitter.setMaxListeners() позволяет изменить ограничение для этого конкретного экземпляра EventEmitter. Для указания неограниченного количества прослушивателей можно задать значение Infinity (или 0).

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

setMaxListeners(number, (EventEmitter<DefaultEventMap> | EventTarget)[])
import { setMaxListeners, EventEmitter } from 'node:events';

const target = new EventTarget();
const emitter = new EventEmitter();

setMaxListeners(5, target, emitter);
[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)

Сведения об унаследованном свойстве

captureRejections

Значение: логическое

Измените параметр captureRejections по умолчанию для всех новых объектов EventEmitter.

static captureRejections: boolean

Значение свойства

boolean

унаследовано от EventEmitter.captureRejections

captureRejectionSymbol

Значение: Symbol.for('nodejs.rejection')

Узнайте, как написать настраиваемый rejection handler.

static captureRejectionSymbol: typeof captureRejectionSymbol

Значение свойства

typeof captureRejectionSymbol

унаследовано от EventEmitter.captureRejectionSymbol

defaultMaxListeners

По умолчанию для любого одного события можно зарегистрировать максимум 10 прослушивателей. Это ограничение можно изменить для отдельных экземпляров EventEmitter с помощью метода emitter.setMaxListeners(n). Чтобы изменить значение по умолчанию для всех экземпляровEventEmitter, можно использовать свойство events.defaultMaxListeners. Если это значение не является положительным числом, создается RangeError.

Будьте осторожны при настройке events.defaultMaxListeners, так как изменение влияет на всехEventEmitter экземпляров, включая созданные до внесения изменений. Однако вызов emitter.setMaxListeners(n) по-прежнему имеет приоритет над events.defaultMaxListeners.

Это не трудное ограничение. Экземпляр EventEmitter позволит добавлять больше прослушивателей, но выводит предупреждение трассировки в stderr, указывающее, что обнаружена "возможная утечка памяти EventEmitter". Для любого одного EventEmitterможно использовать методы emitter.getMaxListeners() и emitter.setMaxListeners(), чтобы временно избежать этого предупреждения:

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});

Флаг командной строки --trace-warnings можно использовать для отображения трассировки стека для таких предупреждений.

Выдающееся предупреждение можно проверить с помощью process.on('warning') и иметь дополнительные emitter, typeи count свойства, ссылающиеся на экземпляр обработчика событий, имя события и число подключенных прослушивателей соответственно. Для свойства name задано значение 'MaxListenersExceededWarning'.

static defaultMaxListeners: number

Значение свойства

number

наследуется от EventEmitter.defaultMaxListeners

errorMonitor

Этот символ должен использоваться для установки прослушивателя только для мониторинга событий 'error'. Прослушиватели, установленные с помощью этого символа, вызываются перед вызовом обычных прослушивателей 'error'.

Установка прослушивателя с помощью этого символа не изменяет поведение после создания события 'error'. Поэтому процесс по-прежнему завершится сбоем, если не установлен обычный прослушиватель 'error'.

static errorMonitor: typeof errorMonitor

Значение свойства

typeof errorMonitor

наследуется от EventEmitter.errorMonitor

Сведения о методе

close()

function close(): Promise<ResultWithIncomingMessage<Disconnected>>

Возвращаемое значение

Promise<ResultWithIncomingMessage<Disconnected>>

close(IncomingMessageCallback<Disconnected>)

Закрывает подключение к Центру Интернета вещей.

function close(done?: IncomingMessageCallback<Disconnected>)

Параметры

done

IncomingMessageCallback<Disconnected>

Необязательная функция для вызова при завершении операции. done будет передан аргумент объекта Error, который будет иметь значение NULL, если операция успешно завершена.

fromConnectionString(string, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданной строки подключения с помощью транспорта по умолчанию (Amqp) или одного, указанного во втором аргументе.

static function fromConnectionString(connStr: string, transportCtor?: TransportCtor): Client

Параметры

connStr

string

Строка подключения, которая инкапсулирует разрешения "device connect" в Центре Интернета вещей.

transportCtor
TransportCtor

Возвращаемое значение

fromSharedAccessSignature(string, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданной подписанной url-адреса с помощью транспорта по умолчанию (Amqp) или указанного во втором аргументе.

static function fromSharedAccessSignature(sharedAccessSignature: string, transportCtor?: TransportCtor): Client

Параметры

sharedAccessSignature

string

Подписанный URL-адрес, который инкапсулирует разрешения "service connect" в Центре Интернета вещей.

transportCtor
TransportCtor

Возвращаемое значение

fromTokenCredential(string, TokenCredential, TransportCtor)

Создает клиент службы Центра Интернета вещей из заданного токена AzureCredential с помощью транспорта по умолчанию (Amqp) или одного, указанного во втором аргументе.

static function fromTokenCredential(hostName: string, tokenCredential: TokenCredential, transportCtor?: TransportCtor): Client

Параметры

hostName

string

Имя узла службы Azure.

tokenCredential
TokenCredential

Токен AzureCredential, используемый для проверки подлинности в службе Azure

transportCtor
TransportCtor

Возвращаемое значение

getFeedbackReceiver()

function getFeedbackReceiver(): Promise<ResultWithIncomingMessage<ServiceReceiver>>

Возвращаемое значение

Promise<ResultWithIncomingMessage<ServiceReceiver>>

getFeedbackReceiver(IncomingMessageCallback<ServiceReceiver>)

Возвращает объект AmqpReceiver, который выдает события при получении клиентом новых сообщений обратной связи.

function getFeedbackReceiver(done?: IncomingMessageCallback<ServiceReceiver>)

Параметры

done

IncomingMessageCallback<ServiceReceiver>

Необязательная функция для вызова при завершении операции. done будет вызываться с двумя аргументами: объект Error (может быть null) и объект AmqpReceiver.

getFileNotificationReceiver()

function getFileNotificationReceiver(): Promise<ResultWithIncomingMessage<ServiceReceiver>>

Возвращаемое значение

Promise<ResultWithIncomingMessage<ServiceReceiver>>

getFileNotificationReceiver(IncomingMessageCallback<ServiceReceiver>)

Возвращает объект AmqpReceiver, который выдает события при получении клиентом новых уведомлений о отправке файлов.

function getFileNotificationReceiver(done?: IncomingMessageCallback<ServiceReceiver>)

Параметры

done

IncomingMessageCallback<ServiceReceiver>

Необязательная функция для вызова при завершении операции. done будет вызываться с двумя аргументами: объект Error (может быть null) и объект AmqpReceiver.

invokeDeviceMethod(string, DeviceMethodParams)

function invokeDeviceMethod(deviceId: string, methodParams: DeviceMethodParams): Promise<ResultWithIncomingMessage<any>>

Параметры

deviceId

string

methodParams
DeviceMethodParams

Возвращаемое значение

Promise<ResultWithIncomingMessage<any>>

invokeDeviceMethod(string, DeviceMethodParams, IncomingMessageCallback<any>)

Вызывает метод на определенном устройстве или модуле.

function invokeDeviceMethod(deviceId: string, methodParams: DeviceMethodParams, done?: IncomingMessageCallback<any>)

Параметры

deviceId

string

Идентификатор существующего удостоверения устройства.

methodParams
DeviceMethodParams
done

IncomingMessageCallback<any>

Необязательный обратный вызов для вызова с результатом выполнения метода.

invokeDeviceMethod(string, string, DeviceMethodParams)

function invokeDeviceMethod(deviceId: string, moduleId: string, methodParams: DeviceMethodParams): Promise<ResultWithIncomingMessage<any>>

Параметры

deviceId

string

moduleId

string

methodParams
DeviceMethodParams

Возвращаемое значение

Promise<ResultWithIncomingMessage<any>>

invokeDeviceMethod(string, string, DeviceMethodParams, IncomingMessageCallback<any>)

function invokeDeviceMethod(deviceId: string, moduleId: string, methodParams: DeviceMethodParams, done: IncomingMessageCallback<any>)

Параметры

deviceId

string

moduleId

string

methodParams
DeviceMethodParams
done

IncomingMessageCallback<any>

open()

function open(): Promise<ResultWithIncomingMessage<Connected>>

Возвращаемое значение

Promise<ResultWithIncomingMessage<Connected>>

open(IncomingMessageCallback<Connected>)

Открывает подключение к Центру Интернета вещей.

function open(done?: IncomingMessageCallback<Connected>)

Параметры

done

IncomingMessageCallback<Connected>

Необязательная функция для вызова при завершении операции. done будет передан аргумент объекта Error, который будет иметь значение NULL, если операция успешно завершена.

send(string, Message | BufferConvertible)

function send(deviceId: string, message: Message | BufferConvertible): Promise<ResultWithIncomingMessage<MessageEnqueued>>

Параметры

deviceId

string

message

Message | BufferConvertible

Возвращаемое значение

Promise<ResultWithIncomingMessage<MessageEnqueued>>

send(string, Message | BufferConvertible, IncomingMessageCallback<MessageEnqueued>)

Отправляет сообщение на устройство.

function send(deviceId: string, message: Message | BufferConvertible, done?: IncomingMessageCallback<MessageEnqueued>)

Параметры

deviceId

string

Идентификатор существующего удостоверения устройства.

message

Message | BufferConvertible

Текст сообщения для отправки на устройство. Если message не является типом message, он будет преобразован.

done

IncomingMessageCallback<MessageEnqueued>

Необязательная функция для вызова при завершении операции. done будет вызываться с двумя аргументами: объект error (может быть null) и объект ответа, зависящий от транспорта, полезный для ведения журнала или отладки.

setRetryPolicy(RetryPolicy)

Задайте политику, используемую клиентом для повторных сетевых операций.

function setRetryPolicy(policy: RetryPolicy)

Параметры

policy

RetryPolicy

политика, используемая для повторных операций (например, открытия, отправки и т. д.). Пакет SDK поставляется с 2 "встроенными" политиками: ExponentialBackoffWithJitter (по умолчанию) и NoRetry (для отмены любой формы повторных попыток). Пользователь также может передать свой собственный объект, если он реализует 2 метода: - shouldRetry(err: Error): boolean: указывает, следует ли выполнить операцию на основе типа ошибки : nextRetryTimeout(retryTimeout: number, регулирование: boolean): число: возвращает время ожидания (в миллисекундах) перед повторным повтором на основе последнего числа попыток (retryCount) и тот факт, что ошибка является ошибкой регулирования или нет.

Сведения о наследуемом методе

addAbortListener(AbortSignal, (event: Event) => void)

Прослушивает событие abort на предоставленном signal.

Прослушивание события abort сигналов прерывания небезопасно и может привести к утечкам ресурсов, так как другая сторонняя сторона с сигналом может вызывать e.stopImmediatePropagation(). К сожалению, Node.js не может изменить это, так как это нарушает веб-стандарт. Кроме того, исходный API упрощает удаление прослушивателей.

Этот API позволяет безопасно использовать AbortSignalв Node.js API путем решения этих двух проблем, прослушивая событие таким образом, что stopImmediatePropagation не препятствует запуску прослушивателя.

Возвращает одноразовый объект, чтобы его можно было отменить с более легкой подписки.

import { addAbortListener } from 'node:events';

function example(signal) {
  let disposable;
  try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
    });
  } finally {
    disposable?.[Symbol.dispose]();
  }
}
static function addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable

Параметры

signal

AbortSignal

resource

(event: Event) => void

Возвращаемое значение

Disposable

Удаляется, удаляющий прослушиватель abort.

наследуется от EventEmitter.addAbortListener

addListener<K>(string | symbol, (args: any[]) => void)

Псевдоним для emitter.on(eventName, listener).

function addListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

listener

(args: any[]) => void

Возвращаемое значение

наследуется от EventEmitter.addListener

emit<K>(string | symbol, AnyRest)

Синхронно вызывает каждый из прослушивателей, зарегистрированных для события с именем eventName, в том порядке, в который они были зарегистрированы, передавая предоставленные аргументы каждому из них.

Возвращает true, если событие имело прослушиватели, false в противном случае.

import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();

// First listener
myEmitter.on('event', function firstListener() {
  console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
  console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
  const parameters = args.join(', ');
  console.log(`event with parameters ${parameters} in third listener`);
});

console.log(myEmitter.listeners('event'));

myEmitter.emit('event', 1, 2, 3, 4, 5);

// Prints:
// [
//   [Function: firstListener],
//   [Function: secondListener],
//   [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
function emit<K>(eventName: string | symbol, args: AnyRest): boolean

Параметры

eventName

string | symbol

args

AnyRest

Возвращаемое значение

boolean

наследуется от EventEmitter.emit

eventNames()

Возвращает массив, в котором перечислены события, для которых у поставщика зарегистрированы прослушиватели. Значения в массиве — это строки или Symbols.

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
function eventNames(): (string | symbol)[]

Возвращаемое значение

(string | symbol)[]

наследуется от EventEmitter.eventNames

getEventListeners(EventEmitter<DefaultEventMap> | EventTarget, string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName.

Для EventEmitterэто ведет себя точно так же, как вызов .listeners на эмитере.

Для EventTargetэто единственный способ получить прослушиватели событий для целевого объекта события. Это полезно для отладки и диагностики.

import { getEventListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
}
static function getEventListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget, name: string | symbol): Function[]

Параметры

emitter

EventEmitter<DefaultEventMap> | EventTarget

name

string | symbol

Возвращаемое значение

Function[]

унаследовано от EventEmitter.getEventListeners

getMaxListeners()

Возвращает текущее значение максимального прослушивателя для EventEmitter, заданного emitter.setMaxListeners(n) или по умолчанию для defaultMaxListeners.

function getMaxListeners(): number

Возвращаемое значение

number

наследуется от EventEmitter.getMaxListeners

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

Возвращает текущее максимальное количество прослушивателей.

Для EventEmitterэто ведет себя точно так же, как вызов .getMaxListeners на эмитере.

Для EventTargetэто единственный способ получить максимальное число прослушивателей событий для целевого объекта событий. Если число обработчиков событий в одном объекте EventTarget превышает максимальное число, событие EventTarget выводит предупреждение.

import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  console.log(getMaxListeners(ee)); // 10
  setMaxListeners(11, ee);
  console.log(getMaxListeners(ee)); // 11
}
{
  const et = new EventTarget();
  console.log(getMaxListeners(et)); // 10
  setMaxListeners(11, et);
  console.log(getMaxListeners(et)); // 11
}
static function getMaxListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget): number

Параметры

emitter

EventEmitter<DefaultEventMap> | EventTarget

Возвращаемое значение

number

наследуется от EventEmitter.getMaxListeners

listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

Предупреждение

Теперь этот API является нерекомендуемым.

Since v3.2.0 - Use listenerCount instead.

Метод класса, возвращающий количество прослушивателей для заданного eventName зарегистрированного в заданном emitter.

import { EventEmitter, listenerCount } from 'node:events';

const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
static function listenerCount(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol): number

Параметры

emitter

EventEmitter<DefaultEventMap>

Испускатель для запроса

eventName

string | symbol

Имя события

Возвращаемое значение

number

наследуется от EventEmitter.listenerCount

listenerCount<K>(string | symbol, Function)

Возвращает число прослушивателей, прослушивающих событие с именем eventName. Если указана listener, он возвращает количество раз, когда прослушиватель найден в списке прослушивателей события.

function listenerCount<K>(eventName: string | symbol, listener?: Function): number

Параметры

eventName

string | symbol

Имя прослушиваемого события

listener

Function

Функция обработчика событий

Возвращаемое значение

number

наследуется от EventEmitter.listenerCount

listeners<K>(string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName.

server.on('connection', (stream) => {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
function listeners<K>(eventName: string | symbol): Function[]

Параметры

eventName

string | symbol

Возвращаемое значение

Function[]

наследуется от EventEmitter.listeners

off<K>(string | symbol, (args: any[]) => void)

Псевдоним для emitter.removeListener().

function off<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

listener

(args: any[]) => void

Возвращаемое значение

наследуется от EventEmitter.off

on(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterIteratorOptions)

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
});

for await (const event of on(ee, 'foo')) {
  // The execution of this inner block is synchronous and it
  // processes one event at a time (even with await). Do not use
  // if concurrent execution is required.
  console.log(event); // prints ['bar'] [42]
}
// Unreachable here

Возвращает AsyncIterator, которая выполняет итерацию событий eventName. Если EventEmitter выдает 'error'. При выходе из цикла удаляются все прослушиватели. value, возвращаемые каждой итерацией, — это массив, состоящий из аргументов создаваемых событий.

Для отмены ожиданий событий можно использовать AbortSignal:

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());

Используйте параметр close, чтобы указать массив имен событий, который завершит итерацию:

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
  ee.emit('close');
});

for await (const event of on(ee, 'foo', { close: ['close'] })) {
  console.log(event); // prints ['bar'] [42]
}
// the loop will exit after 'close' is emitted
console.log('done'); // prints 'done'
static function on(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol, options?: StaticEventEmitterIteratorOptions): AsyncIterableIterator<any[]>

Параметры

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterIteratorOptions

Возвращаемое значение

AsyncIterableIterator<any[]>

AsyncIterator, которая выполняет итерацию событий eventName, создаваемых emitter

наследуется от EventEmitter.on

on(EventTarget, string, StaticEventEmitterIteratorOptions)

static function on(emitter: EventTarget, eventName: string, options?: StaticEventEmitterIteratorOptions): AsyncIterableIterator<any[]>

Параметры

emitter

EventTarget

eventName

string

options

StaticEventEmitterIteratorOptions

Возвращаемое значение

AsyncIterableIterator<any[]>

наследуется от EventEmitter.on

on<K>(string | symbol, (args: any[]) => void)

Добавляет функцию listener в конец массива прослушивателей для события с именем eventName. Проверка не выполняется, чтобы узнать, добавлена ли listener. Несколько вызовов, проходящих одно и то же сочетание eventName и listener, приведет к добавлению listener и вызову несколько раз.

server.on('connection', (stream) => {
  console.log('someone connected!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод emitter.prependListener() можно использовать в качестве альтернативы для добавления прослушивателя событий в начало массива прослушивателей.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
function on<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

наследуется от EventEmitter.on

once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)

Создает Promise, которая выполняется, когда EventEmitter выдает заданное событие или отклоняется, если EventEmitter выдает 'error' во время ожидания. Promise будет разрешаться с массивом всех аргументов, создаваемых заданному событию.

Этот метод намеренно универсальный и работает с веб-платформой интерфейсом EventTarget, который не имеет специальной семантики событий'error' и не прослушивает событие 'error'.

import { once, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

process.nextTick(() => {
  ee.emit('myevent', 42);
});

const [value] = await once(ee, 'myevent');
console.log(value);

const err = new Error('kaboom');
process.nextTick(() => {
  ee.emit('error', err);
});

try {
  await once(ee, 'myevent');
} catch (err) {
  console.error('error happened', err);
}

Специальная обработка события 'error' используется только в том случае, если events.once() используется для ожидания другого события. Если events.once() используется для ожидания самого события "error'", он обрабатывается как любое другое событие без специальной обработки:

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.error('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

AbortSignal можно использовать для отмены ожидания события:

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
static function once(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>

Параметры

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterOptions

Возвращаемое значение

Promise<any[]>

наследуется от EventEmitter.один раз

once(EventTarget, string, StaticEventEmitterOptions)

static function once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>

Параметры

emitter

EventTarget

eventName

string

options

StaticEventEmitterOptions

Возвращаемое значение

Promise<any[]>

наследуется от EventEmitter.один раз

once<K>(string | symbol, (args: any[]) => void)

Добавляет функцию однократного для события с именем . При следующем запуске eventName этот прослушиватель удаляется и вызывается.

server.once('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод emitter.prependOnceListener() можно использовать в качестве альтернативы для добавления прослушивателя событий в начало массива прослушивателей.

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
function once<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

наследуется от EventEmitter.один раз

prependListener<K>(string | symbol, (args: any[]) => void)

Добавляет функцию listener в начала массива прослушивателей для события с именем eventName. Проверка не выполняется, чтобы узнать, добавлена ли listener. Несколько вызовов, проходящих одно и то же сочетание eventName и listener, приведет к добавлению listener и вызову несколько раз.

server.prependListener('connection', (stream) => {
  console.log('someone connected!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

function prependListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

унаследован от EventEmitter.prependListener

prependOnceListener<K>(string | symbol, (args: any[]) => void)

Добавляет функцию однократного для события с именем в начиная массива прослушивателей. При следующем запуске eventName этот прослушиватель удаляется, а затем вызывается.

server.prependOnceListener('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

function prependOnceListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

наследуется от EventEmitter.prependOnceListener

rawListeners<K>(string | symbol)

Возвращает копию массива прослушивателей для события с именем eventName, включая любые оболочки (например, созданные .once()).

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));

// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];

// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();

// Logs "log once" to the console and removes the listener
logFnWrapper();

emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');

// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
function rawListeners<K>(eventName: string | symbol): Function[]

Параметры

eventName

string | symbol

Возвращаемое значение

Function[]

наследуется от EventEmitter.rawListeners

removeAllListeners(string | symbol)

Удаляет все прослушиватели или те из указанных eventName.

Не рекомендуется удалять прослушиватели, добавленные в другое место в коде, особенно если экземпляр EventEmitter был создан другим компонентом или модулем (например, сокетами или потоками файлов).

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

function removeAllListeners(eventName?: string | symbol): Client

Параметры

eventName

string | symbol

Возвращаемое значение

наследуется от EventEmitter.removeAllListeners

removeListener<K>(string | symbol, (args: any[]) => void)

Удаляет указанный listener из массива прослушивателя для события с именем eventName.

const callback = (stream) => {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() удаляет в большинстве случаев один экземпляр прослушивателя из массива прослушивателя. Если один прослушиватель был добавлен несколько раз в массив прослушивателя для указанного eventName, removeListener() необходимо вызывать несколько раз, чтобы удалить каждый экземпляр.

После создания события все прослушиватели, подключенные к нему во время создания, вызываются в порядке. Это означает, что все вызовы removeListener() или removeAllListeners()после отправки и до завершения выполнения последнего прослушивателя не будут удалять их изemit() во время выполнения. Последующие события ведут себя должным образом.

import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

const callbackA = () => {
  console.log('A');
  myEmitter.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
//   A

Так как прослушиватели управляются с помощью внутреннего массива, вызывая это приведет к изменению индексов позиций любого прослушивателя, зарегистрированного после удаленного прослушивателя. Это не повлияет на порядок вызова прослушивателей, но это означает, что все копии массива прослушивателя, возвращенные методом emitter.listeners(), должны быть воссозданы.

Если одна функция была добавлена в обработчик несколько раз для одного события (как в примере ниже), removeListener() удалит последний добавленный экземпляр. В примере прослушивателя once('ping') удаляется:

import { EventEmitter } from 'node:events';
const ee = new EventEmitter();

function pong() {
  console.log('pong');
}

ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);

ee.emit('ping');
ee.emit('ping');

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

function removeListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client

Параметры

eventName

string | symbol

listener

(args: any[]) => void

Возвращаемое значение

наследуется от EventEmitter.removeListener

setMaxListeners(number)

По умолчанию EventEmitterбудет выводить предупреждение, если для определенного события добавляются более 10 прослушивателей. Это полезное значение по умолчанию, которое помогает находить утечки памяти. Метод emitter.setMaxListeners() позволяет изменить ограничение для этого конкретного экземпляра EventEmitter. Для указания неограниченного количества прослушивателей можно задать значение Infinity (или 0).

Возвращает ссылку на EventEmitter, чтобы вызовы могли быть связаны.

function setMaxListeners(n: number): Client

Параметры

n

number

Возвращаемое значение

наследуется от EventEmitter.setMaxListeners

setMaxListeners(number, (EventEmitter<DefaultEventMap> | EventTarget)[])

import { setMaxListeners, EventEmitter } from 'node:events';

const target = new EventTarget();
const emitter = new EventEmitter();

setMaxListeners(5, target, emitter);
static function setMaxListeners(n?: number, eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[])

Параметры

n

number

Не отрицательное число. Максимальное количество прослушивателей на событие EventTarget.

eventTargets

(EventEmitter<DefaultEventMap> | EventTarget)[]

наследуется от EventEmitter.setMaxListeners

[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)

function [captureRejectionSymbol]<K>(error: Error, event: string | symbol, args: AnyRest)

Параметры

error

Error

event

string | symbol

args

AnyRest

унаследован от EventEmitter.__@captureRejectionSymbol@119