ModuleClient class

Клиент устройства Центра Интернета вещей, используемый для подключения устройства к Центру Интернета вещей Azure.

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

Extends

InternalClient

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

captureRejections

Значение: булево

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

captureRejectionSymbol

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

Посмотрите, как написать кастомный rejection handler.

defaultMaxListeners

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

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

Это не жёсткое ограничение. Инстанс позволит добавить больше слушателей, но выдаст предупреждение о trace в stderr, EventEmitter указывающее на «возможную утечку памяти 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(Callback<Disconnected>)

Закрывает транспортное подключение и уничтожает клиентские ресурсы.

Примечание. После вызова этого метода объект ModuleClient нельзя повторно использовать.

fromAuthenticationProvider(AuthenticationProvider, any)

Создает клиент модуля Центра Интернета вещей из заданного метода проверки подлинности и использует заданный тип транспорта.

fromConnectionString(string, any)

Создает клиент устройства Центра Интернета вещей из заданной строки подключения с помощью заданного типа транспорта.

fromEnvironment(any)
fromEnvironment(any, Callback<ModuleClient>)

Создает клиент модуля Центра Интернета вещей с помощью сведений о конфигурации из среды.

Если переменная среды с именем EdgeHubConnectionString или IotHubConnectionString существует, то это значение используется и поведение идентично вызову fromConnectionString передачи. Если эти переменные среды не существуют, необходимо определить следующие переменные:

- IOTEDGE_WORKLOADURI          URI for iotedged's workload API
- IOTEDGE_DEVICEID             Device identifier
- IOTEDGE_MODULEID             Module identifier
- IOTEDGE_MODULEGENERATIONID   Module generation identifier
- IOTEDGE_IOTHUBHOSTNAME       IoT Hub host name
- IOTEDGE_AUTHSCHEME           Authentication scheme to use; must be "sasToken"
fromSharedAccessSignature(string, any)

Создает клиент модуля Центра Интернета вещей из заданной подписанной url-адреса с помощью заданного типа транспорта.

invokeMethod(string, MethodParams)
invokeMethod(string, MethodParams, Callback<MethodResult>)

Вызывает метод на нижнем устройстве или другом модуле на том же устройстве IoTEdge. Обратите внимание, что эта функция работает только в том случае, если модуль выполняется как часть устройства IoTEdge.

invokeMethod(string, string, MethodParams)
invokeMethod(string, string, MethodParams, Callback<MethodResult>)
onMethod(string, DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

Регистрирует обратный вызов для метода с именем methodName.

sendOutputEvent(string, Message)
sendOutputEvent(string, Message, Callback<MessageEnqueued>)

Отправляет событие в выходные данные заданного модуля

sendOutputEventBatch(string, Message[])
sendOutputEventBatch(string, Message[], Callback<MessageEnqueued>)

Отправляет массив событий в выходные данные заданного модуля

setOptions(DeviceClientOptions)
setOptions(DeviceClientOptions, Callback<TransportConfigured>)

Передает параметры объекту ModuleClient, который можно использовать для настройки транспорта.

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

abandon(Message)
abandon(Message, Callback<MessageAbandoned>)
addAbortListener(AbortSignal, (event: Event) => void)

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

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

Этот API позволяет безопасно использовать AbortSignals в 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).

complete(Message)
complete(Message, Callback<MessageCompleted>)
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.

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

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

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) или значением по умолчанию <xref:EventEmitter.defaultMaxListeners>.

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

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

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

Для EventTargetS это единственный способ получить максимальное количество слушателей для целевого события. Если количество обработчиков событий в одном 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
}
getTwin()
getTwin(Callback<Twin>)
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 каждой итерацией — это массив, состоящий из выпущенных аргументов событий.

An 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

An 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
open()
open(Callback<Connected>)
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');
reject(Message)
reject(Message, Callback<MessageRejected>)
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, чтобы вызовы могли быть связаны.

sendEvent(Message)
sendEvent(Message, Callback<MessageEnqueued>)
sendEventBatch(Message[])
sendEventBatch(Message[], Callback<MessageEnqueued>)
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);
setRetryPolicy(RetryPolicy)

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

setTransportOptions(any)
setTransportOptions(any, Callback<TransportConfigured>)
updateSharedAccessSignature(string, Callback<SharedAccessSignatureUpdated>)
[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)

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

captureRejections

Значение: булево

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

static captureRejections: boolean

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

boolean

Унаследовано от InternalClient.captureRejections

captureRejectionSymbol

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

Посмотрите, как написать кастомный rejection handler.

static captureRejectionSymbol: typeof captureRejectionSymbol

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

typeof captureRejectionSymbol

Унаследовано от InternalClient.captureRejectionSymbol

defaultMaxListeners

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

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

Это не жёсткое ограничение. Инстанс позволит добавить больше слушателей, но выдаст предупреждение о trace в stderr, EventEmitter указывающее на «возможную утечку памяти 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

Унаследовано от InternalClient.defaultMaxListeners

errorMonitor

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

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

static errorMonitor: typeof errorMonitor

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

typeof errorMonitor

Унаследовано от InternalClient.errorMonitor

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

close()

function close(): Promise<Disconnected>

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

Promise<Disconnected>

close(Callback<Disconnected>)

Закрывает транспортное подключение и уничтожает клиентские ресурсы.

Примечание. После вызова этого метода объект ModuleClient нельзя повторно использовать.

function close(closeCallback?: Callback<Disconnected>)

Параметры

closeCallback

Callback<Disconnected>

Необязательная функция для вызова после отключения транспорта и закрытия клиента.

fromAuthenticationProvider(AuthenticationProvider, any)

Создает клиент модуля Центра Интернета вещей из заданного метода проверки подлинности и использует заданный тип транспорта.

static function fromAuthenticationProvider(authenticationProvider: AuthenticationProvider, transportCtor: any): ModuleClient

Параметры

authenticationProvider

AuthenticationProvider

Объект, используемый для получения параметров проверки подлинности для Центра Интернета вещей.

transportCtor

any

Транспортный протокол, используемый для подключения к Центру Интернета вещей.

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

fromConnectionString(string, any)

Создает клиент устройства Центра Интернета вещей из заданной строки подключения с помощью заданного типа транспорта.

static function fromConnectionString(connStr: string, transportCtor: any): ModuleClient

Параметры

connStr

string

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

transportCtor

any

Конструктор транспорта.

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

fromEnvironment(any)

static function fromEnvironment(transportCtor: any): Promise<ModuleClient>

Параметры

transportCtor

any

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

Promise<ModuleClient>

fromEnvironment(any, Callback<ModuleClient>)

Создает клиент модуля Центра Интернета вещей с помощью сведений о конфигурации из среды.

Если переменная среды с именем EdgeHubConnectionString или IotHubConnectionString существует, то это значение используется и поведение идентично вызову fromConnectionString передачи. Если эти переменные среды не существуют, необходимо определить следующие переменные:

- IOTEDGE_WORKLOADURI          URI for iotedged's workload API
- IOTEDGE_DEVICEID             Device identifier
- IOTEDGE_MODULEID             Module identifier
- IOTEDGE_MODULEGENERATIONID   Module generation identifier
- IOTEDGE_IOTHUBHOSTNAME       IoT Hub host name
- IOTEDGE_AUTHSCHEME           Authentication scheme to use; must be "sasToken"
static function fromEnvironment(transportCtor: any, callback?: Callback<ModuleClient>)

Параметры

transportCtor

any

Транспортный протокол, используемый для подключения к Центру Интернета вещей.

callback

Callback<ModuleClient>

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

fromSharedAccessSignature(string, any)

Создает клиент модуля Центра Интернета вещей из заданной подписанной url-адреса с помощью заданного типа транспорта.

static function fromSharedAccessSignature(sharedAccessSignature: string, transportCtor: any): ModuleClient

Параметры

sharedAccessSignature

string

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

transportCtor

any

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

invokeMethod(string, MethodParams)

function invokeMethod(deviceId: string, methodParams: MethodParams): Promise<MethodResult>

Параметры

deviceId

string

methodParams

MethodParams

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

Promise<MethodResult>

invokeMethod(string, MethodParams, Callback<MethodResult>)

Вызывает метод на нижнем устройстве или другом модуле на том же устройстве IoTEdge. Обратите внимание, что эта функция работает только в том случае, если модуль выполняется как часть устройства IoTEdge.

function invokeMethod(deviceId: string, methodParams: MethodParams, callback?: Callback<MethodResult>)

Параметры

deviceId

string

идентификатор целевого устройства

methodParams

MethodParams

параметры вызова прямого метода

callback

Callback<MethodResult>

необязательный обратный вызов, который будет вызван с объектом Error или результатом вызова метода.

invokeMethod(string, string, MethodParams)

function invokeMethod(deviceId: string, moduleId: string, methodParams: MethodParams): Promise<MethodResult>

Параметры

deviceId

string

moduleId

string

methodParams

MethodParams

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

Promise<MethodResult>

invokeMethod(string, string, MethodParams, Callback<MethodResult>)

function invokeMethod(deviceId: string, moduleId: string, methodParams: MethodParams, callback: Callback<MethodResult>)

Параметры

deviceId

string

moduleId

string

methodParams

MethodParams

callback

Callback<MethodResult>

onMethod(string, DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

Регистрирует обратный вызов для метода с именем methodName.

function onMethod(methodName: string, callback: DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

Параметры

methodName

string

Имя метода, который будет обрабатываться обратным вызовом

callback

DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>

Функция, которая должна вызываться всякий раз при получении запроса метода для метода, вызываемого methodName.

sendOutputEvent(string, Message)

function sendOutputEvent(outputName: string, message: Message): Promise<MessageEnqueued>

Параметры

outputName

string

message
Message

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

Promise<MessageEnqueued>

sendOutputEvent(string, Message, Callback<MessageEnqueued>)

Отправляет событие в выходные данные заданного модуля

function sendOutputEvent(outputName: string, message: Message, callback?: Callback<MessageEnqueued>)

Параметры

outputName

string

Имя выходных данных для отправки события в

message
Message

Сообщение для отправки в указанные выходные данные

callback

Callback<MessageEnqueued>

Необязательная функция для вызова при очереди операции.

sendOutputEventBatch(string, Message[])

function sendOutputEventBatch(outputName: string, messages: Message[]): Promise<MessageEnqueued>

Параметры

outputName

string

messages

Message[]

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

Promise<MessageEnqueued>

sendOutputEventBatch(string, Message[], Callback<MessageEnqueued>)

Отправляет массив событий в выходные данные заданного модуля

function sendOutputEventBatch(outputName: string, messages: Message[], callback?: Callback<MessageEnqueued>)

Параметры

outputName

string

Имя выходных данных для отправки событий в

messages

Message[]

callback

Callback<MessageEnqueued>

Функция для вызова при очереди операций.

setOptions(DeviceClientOptions)

function setOptions(options: DeviceClientOptions): Promise<TransportConfigured>

Параметры

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

Promise<TransportConfigured>

setOptions(DeviceClientOptions, Callback<TransportConfigured>)

Передает параметры объекту ModuleClient, который можно использовать для настройки транспорта.

function setOptions(options: DeviceClientOptions, done?: Callback<TransportConfigured>)

Параметры

options
DeviceClientOptions

Объект DeviceClientOptions .

done

Callback<TransportConfigured>

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

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

abandon(Message)

function abandon(message: Message): Promise<MessageAbandoned>

Параметры

message
Message

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

Promise<MessageAbandoned>

унаследован от InternalClient.abandon

abandon(Message, Callback<MessageAbandoned>)

function abandon(message: Message, abandonCallback: Callback<MessageAbandoned>)

Параметры

message
Message
abandonCallback

Callback<MessageAbandoned>

унаследован от InternalClient.abandon

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

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

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

Этот API позволяет безопасно использовать AbortSignals в 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 слушателя.

Унаследовано от InternalClient.addAbortListener

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

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

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

Параметры

eventName

string | symbol

listener

(args: any[]) => void

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

унаследован от InternalClient.addListener

complete(Message)

function complete(message: Message): Promise<MessageCompleted>

Параметры

message
Message

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

Promise<MessageCompleted>

унаследован от InternalClient.complete

complete(Message, Callback<MessageCompleted>)

function complete(message: Message, completeCallback: Callback<MessageCompleted>)

Параметры

message
Message
completeCallback

Callback<MessageCompleted>

унаследован от InternalClient.complete

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

наследуется от InternalClient.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)[]

Наследуется от InternalClient.eventNames

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

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

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

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

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[]

Унаследовано от InternalClient.getEventListeners

getMaxListeners()

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

function getMaxListeners(): number

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

number

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

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

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

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

Для EventTargetS это единственный способ получить максимальное количество слушателей для целевого события. Если количество обработчиков событий в одном 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

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

getTwin()

function getTwin(): Promise<Twin>

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

Promise<Twin>

унаследован от InternalClient.getTwin

getTwin(Callback<Twin>)

function getTwin(done: Callback<Twin>)

Параметры

done

Callback<Twin>

унаследован от InternalClient.getTwin

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

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

listenerCount<K>(string | symbol, Function)

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

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

Параметры

eventName

string | symbol

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

listener

Function

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

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

number

наследуется от InternalClient.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[]

наследуется от InternalClient.прослушивателей

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

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

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

Параметры

eventName

string | symbol

listener

(args: any[]) => void

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

наследуется от InternalClient.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 каждой итерацией — это массив, состоящий из выпущенных аргументов событий.

An 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): AsyncIterator<any[], any, any>

Параметры

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterIteratorOptions

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

AsyncIterator<any[], any, any>

T, AsyncIterator который повторяет eventName события, исходящие от emitter

унаследовано от InternalClient.on

on(EventTarget, string, StaticEventEmitterIteratorOptions)

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

Параметры

emitter

EventTarget

eventName

string

options

StaticEventEmitterIteratorOptions

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

AsyncIterator<any[], any, any>

унаследовано от InternalClient.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): ModuleClient

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

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

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

унаследовано от InternalClient.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

An 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[]>

наследуется от InternalClient.once

once(EventTarget, string, StaticEventEmitterOptions)

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

Параметры

emitter

EventTarget

eventName

string

options

StaticEventEmitterOptions

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

Promise<any[]>

наследуется от InternalClient.once

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): ModuleClient

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

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

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

наследуется от InternalClient.once

open()

function open(): Promise<Connected>

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

Promise<Connected>

наследуется от InternalClient.open

open(Callback<Connected>)

function open(openCallback: Callback<Connected>)

Параметры

openCallback

Callback<Connected>

наследуется от InternalClient.open

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): ModuleClient

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

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

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

унаследован от InternalClient.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): ModuleClient

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

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

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

унаследован от InternalClient.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[]

унаследовано от InternalClient.rawListeners

reject(Message)

function reject(message: Message): Promise<MessageRejected>

Параметры

message
Message

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

Promise<MessageRejected>

наследуется от InternalClient.reject

reject(Message, Callback<MessageRejected>)

function reject(message: Message, rejectCallback: Callback<MessageRejected>)

Параметры

message
Message
rejectCallback

Callback<MessageRejected>

наследуется от InternalClient.reject

removeAllListeners(string | symbol)

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

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

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

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

Параметры

eventName

string | symbol

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

наследуется от InternalClient.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): ModuleClient

Параметры

eventName

string | symbol

listener

(args: any[]) => void

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

унаследован от InternalClient.removeListener

sendEvent(Message)

function sendEvent(message: Message): Promise<MessageEnqueued>

Параметры

message
Message

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

Promise<MessageEnqueued>

унаследовано от InternalClient.sendEvent

sendEvent(Message, Callback<MessageEnqueued>)

function sendEvent(message: Message, sendEventCallback: Callback<MessageEnqueued>)

Параметры

message
Message
sendEventCallback

Callback<MessageEnqueued>

унаследовано от InternalClient.sendEvent

sendEventBatch(Message[])

function sendEventBatch(messages: Message[]): Promise<MessageEnqueued>

Параметры

messages

Message[]

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

Promise<MessageEnqueued>

унаследован от InternalClient.sendEventBatch

sendEventBatch(Message[], Callback<MessageEnqueued>)

function sendEventBatch(messages: Message[], sendEventBatchCallback: Callback<MessageEnqueued>)

Параметры

messages

Message[]

sendEventBatchCallback

Callback<MessageEnqueued>

унаследован от InternalClient.sendEventBatch

setMaxListeners(number)

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

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

function setMaxListeners(n: number): ModuleClient

Параметры

n

number

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

наследуется от InternalClient.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)[]

Ноль или более экземпляров {EventTarget} или {EventEmitter}. Если их не указано, n устанавливается как максимальный максимум по умолчанию для всех вновь созданных объектов {EventTarget} и {EventEmitter}.

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

setRetryPolicy(RetryPolicy)

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

function setRetryPolicy(policy: RetryPolicy)

Параметры

policy

RetryPolicy

{RetryPolicy} Политика повторных попыток, которая должна использоваться для всех будущих операций.

унаследован от InternalClient.setRetryPolicy

setTransportOptions(any)

function setTransportOptions(options: any): Promise<TransportConfigured>

Параметры

options

any

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

Promise<TransportConfigured>

наследуется от InternalClient.setTransportOptions

setTransportOptions(any, Callback<TransportConfigured>)

function setTransportOptions(options: any, done: Callback<TransportConfigured>)

Параметры

options

any

done

Callback<TransportConfigured>

наследуется от InternalClient.setTransportOptions

updateSharedAccessSignature(string, Callback<SharedAccessSignatureUpdated>)

function updateSharedAccessSignature(sharedAccessSignature: string, updateSasCallback?: Callback<SharedAccessSignatureUpdated>)

Параметры

sharedAccessSignature

string

updateSasCallback

Callback<SharedAccessSignatureUpdated>

унаследован от InternalClient.updateSharedAccessSignature

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

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

Параметры

error

Error

event

string | symbol

args

AnyRest

Унаследованный от InternalClient.__@captureRejectionSymbol@141