Канал диагностики¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:diagnostics_channel предоставляет API для создания именованных каналов передачи произвольных данных в целях диагностики.
Подключение:
1 | |
1 | |
Обычно автор модуля, которому нужны диагностические сообщения, создаёт один или несколько каналов верхнего уровня. Каналы можно получать и во время выполнения, но это нежелательно из‑за накладных расходов. Каналы можно экспортировать для удобства; если известно имя, канал можно получить откуда угодно.
Если модуль должен отдавать диагностические данные потребителям, задокументируйте используемые имена каналов и форму сообщений. В имена обычно включают имя модуля, чтобы избежать коллизий.
Публичный API¶
Обзор¶
Краткий обзор публичного API.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
diagnostics_channel.hasSubscribers(name)¶
Проверяет наличие активных подписчиков у именованного канала. Полезно, если подготовка сообщения может быть дорогой.
API необязательно, но удобно при публикации из кода, критичного к производительности.
1 2 3 4 5 | |
1 2 3 4 5 | |
diagnostics_channel.channel(name)¶
Основная точка входа для публикации в именованный канал. Возвращает объект канала, оптимизированный для минимальных накладных расходов при публикации.
1 2 3 | |
1 2 3 | |
diagnostics_channel.subscribe(name, onMessage)¶
name<string>|<symbol>имя каналаonMessage<Function>обработчик сообщений канала
Регистрирует обработчик подписки на канал. Обработчик вызывается синхронно при каждой публикации. Ошибки в обработчике приводят к 'uncaughtException'.
1 2 3 4 5 | |
1 2 3 4 5 | |
diagnostics_channel.unsubscribe(name, onMessage)¶
name<string>|<symbol>имя каналаonMessage<Function>ранее зарегистрированный обработчик для удаления- Возвращает:
<boolean>true, если обработчик найден, иначеfalse.
Удаляет обработчик, ранее зарегистрированный через diagnostics_channel.subscribe(name, onMessage).
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
diagnostics_channel.tracingChannel(nameOrChannels)¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
nameOrChannels<string>|<TracingChannel>имя канала или объект со всеми каналами TracingChannel- Возвращает:
<TracingChannel>набор каналов для трассировки
Создаёт обёртку TracingChannel для заданных каналов TracingChannel. Если передано имя, соответствующие каналы трассировки создаются в виде tracing:${name}:${eventType}, где eventType соответствует типам каналов TracingChannel.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
diagnostics_channel.boundedChannel(nameOrChannels)¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
nameOrChannels<string>|<BoundedChannel>имя канала или объект со всеми каналами BoundedChannel- Возвращает:
<BoundedChannel>набор каналов для трассировки
Создаёт обёртку BoundedChannel для заданных каналов. Если передано имя, каналы создаются в виде tracing:${name}:${eventType}, где eventType — start или end.
BoundedChannel — упрощённый вариант TracingChannel: трассируются только синхронные операции; есть только события start и end без asyncStart, asyncEnd и error, что подходит для операций без асинхронных продолжений и отдельной обработки ошибок.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
Класс: Channel¶
Класс Channel представляет отдельный именованный канал в конвейере данных. Отслеживает подписчиков и публикует сообщения при их наличии. Отдельный объект нужен, чтобы не выполнять поиск канала при публикации — это даёт высокую скорость публикации и низкую стоимость при активном использовании. Каналы создаются через diagnostics_channel.channel(name); прямой вызов new Channel(name) не поддерживается.
channel.hasSubscribers¶
- Возвращает:
<boolean>есть ли активные подписчики
Проверяет наличие активных подписчиков у этого канала. Полезно, если подготовка сообщения может быть дорогой.
API необязательно, но удобно при публикации из кода, критичного к производительности.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
channel.publish(message)¶
message<any>сообщение для подписчиков канала
Публикует сообщение всем подписчикам канала. Обработчики вызываются синхронно в том же контексте.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
channel.subscribe(onMessage)¶
onMessage<Function>обработчик сообщений канала
Регистрирует обработчик подписки на этот канал. Обработчик выполняется синхронно при каждой публикации. Ошибки в обработчике приводят к 'uncaughtException'.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
channel.unsubscribe(onMessage)¶
onMessage<Function>ранее зарегистрированный обработчик для удаления- Возвращает:
<boolean>true, если обработчик найден, иначеfalse.
Удаляет обработчик, ранее зарегистрированный через channel.subscribe(onMessage).
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
channel.bindStore(store[, transform])¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
store<AsyncLocalStorage>хранилище для привязки контекстаtransform<Function>преобразование данных контекста перед установкой в хранилище
При вызове channel.runStores(context, ...) указанные данные контекста применяются ко всем хранилищам, привязанным к каналу. Если хранилище уже было привязано, предыдущая функция transform заменяется новой. Функцию transform можно опустить — тогда данные контекста задают контекст хранилища напрямую.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
channel.unbindStore(store)¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
store<AsyncLocalStorage>хранилище для отвязки от канала- Возвращает:
<boolean>true, если хранилище найдено, иначеfalse.
Удаляет привязку хранилища, ранее созданную channel.bindStore(store).
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
channel.runStores(context, fn[, thisArg[, ...args]])¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
context<any>сообщение для подписчиков и привязки к хранилищамfn<Function>функция, выполняемая во введённом контексте хранилищаthisArg<any>значениеthisдля вызова функции...args<any>необязательные аргументы функции
Применяет данные ко всем экземплярам AsyncLocalStorage, привязанным к каналу, на время выполнения fn, затем публикует в канал в области, где данные применены к хранилищам.
Если в channel.bindStore(store) задана функция преобразования, она применяется к данным сообщения до того, как они станут контекстом хранилища. Предыдущий контекст хранилища доступен внутри transform, если нужна связка контекстов.
Контекст хранилища должен быть доступен в асинхронном коде, продолжающем выполнение, начатое в fn; однако возможна потеря контекста.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
channel.withStoreScope(data)¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
data<any>данные для привязки к хранилищам- Возвращает:
<RunStoresScope>объект области видимости сDisposable
Создаёт область с автоматическим освобождением: привязывает данные к экземплярам AsyncLocalStorage, привязанным к каналу, и публикует их подписчикам. При освобождении восстанавливает предыдущие контексты хранилищ.
Позволяет использовать явное управление ресурсами в JavaScript (синтаксис using и Symbol.dispose) без обёртки в замыкание.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Класс: RunStoresScope¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Класс RunStoresScope — область с Disposable, создаваемая channel.withStoreScope(data). Управляет жизненным циклом контекстов хранилищ и восстанавливает их при выходе из области.
Область нужно использовать с синтаксисом using, чтобы гарантировать освобождение.
Класс: TracingChannel¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Класс TracingChannel объединяет каналы TracingChannel, описывающие одно трассируемое действие. Формализует и упрощает генерацию событий для трассировки потока выполнения. Экземпляр создаётся через diagnostics_channel.tracingChannel(). Как и для Channel, рекомендуется создавать один TracingChannel на уровне модуля и переиспользовать, а не создавать динамически.
tracingChannel.subscribe(subscribers)¶
subscribers<Object>набор подписчиков каналов TracingChannelstart<Function>подписчик событиясобытие startend<Function>подписчик событиясобытие endasyncStart<Function>подписчик событиясобытие asyncStartasyncEnd<Function>подписчик событиясобытие asyncEnderror<Function>подписчик событиясобытие error
Вспомогательный метод подписки набора функций на соответствующие каналы. Эквивалентно вызову channel.subscribe(onMessage) для каждого канала по отдельности.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
tracingChannel.unsubscribe(subscribers)¶
subscribers<Object>набор подписчиков каналов TracingChannelstart<Function>подписчиксобытие startend<Function>подписчиксобытие endasyncStart<Function>подписчиксобытие asyncStartasyncEnd<Function>подписчиксобытие asyncEnderror<Function>подписчиксобытие error
- Возвращает:
<boolean>true, если все обработчики сняты, иначеfalse.
Отписка набора функций от соответствующих каналов. Эквивалентно channel.unsubscribe(onMessage) на каждом канале отдельно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
tracingChannel.traceSync(fn[, context[, thisArg[, ...args]]])¶
fn<Function>функция для обёртки трассировкойcontext<Object>общий объект для корреляции событийthisArg<any>значениеthisдля вызова...args<any>необязательные аргументы функции- Возвращает:
<any>результат вызоваfn
Трассирует синхронный вызов: всегда генерируются событие start и событие end вокруг выполнения и при необходимости событие error, если функция выбросила ошибку. Функция выполняется через channel.runStores(context, ...) на канале start, чтобы привязанные хранилища соответствовали контексту трассировки.
События публикуются только если подписчики есть до начала трассировки; подписки после старта не получат события этой трассировки.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
tracingChannel.tracePromise(fn[, context[, thisArg[, ...args]]])¶
fn<Function>функция для обёртки трассировкойcontext<Object>общий объект для корреляции событий трассировкиthisArg<any>значениеthisдля вызова...args<any>необязательные аргументы функции- Возвращает:
<any>результатfnили результат.then(...), если у канала трассировки есть активные подписчики. Если значение неPromiseи не thenable, оно возвращается как есть и выводится предупреждение.
Трассирует асинхронный вызов, возвращающий Promise или thenable-объект. Всегда генерируются событие start и событие end вокруг синхронной части; при разрешении или отклонении промиса — событие asyncStart и событие asyncEnd. Возможен событие error, если функция выбросила ошибку или промис отклонён. Выполнение идёт через channel.runStores(context, ...) на канале start.
Если fn вернула не промис и не thenable, значение возвращается с предупреждением, без событий asyncStart и asyncEnd.
События публикуются только если подписчики есть до начала трассировки.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
tracingChannel.traceCallback(fn[, position[, context[, thisArg[, ...args]]]])¶
fn<Function>функция, принимающая колбэк, для обёртки трассировкойposition<number>индекс (с нуля) аргумента с ожидаемым колбэком (по умолчанию — последний аргумент, если переданundefined)context<Object>общий объект корреляции (по умолчанию{}, еслиundefined)thisArg<any>значениеthisдля вызова...args<any>аргументы вызова (должен включать колбэк)- Возвращает:
<any>результат вызоваfn
Трассирует вызов функции с колбэком в типичной конвенции «ошибка первым аргументом». Всегда даёт событие start и событие end вокруг синхронной части и событие asyncStart с событие asyncEnd вокруг выполнения колбэка. Возможен событие error, если функция выбросила ошибку или в колбэк передан первый аргумент (ошибка). Выполнение через channel.runStores(context, ...) на канале start.
События публикуются только если подписчики есть до начала трассировки.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 | |
Колбэк также выполняется внутри channel.runStores(context, ...), что в ряде случаев помогает восстановить контекст после потери контекста.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
tracingChannel.hasSubscribers¶
- Возвращает:
<boolean>true, если хотя бы у одного из каналов есть подписчик, иначеfalse.
Вспомогательное свойство экземпляра TracingChannel: есть ли подписчики у любого из каналов TracingChannel.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
Класс: BoundedChannel¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Класс BoundedChannel — упрощённый TracingChannel: трассируются только синхронные операции; два канала (start и end) вместо пяти, без asyncStart, asyncEnd и error. Подходит для операций без асинхронных продолжений и отдельной обработки ошибок.
Как и для TracingChannel, рекомендуется один экземпляр на уровне модуля.
boundedChannel.hasSubscribers¶
- Возвращает:
<boolean>true, если у одного из каналов есть подписчик, иначеfalse.
Проверяет наличие подписчиков у каналов start или end.
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
boundedChannel.subscribe(handlers)¶
handlers<Object>подписчики каналовstart<Function>подписчик события startend<Function>подписчик события end
Подписка на события bounded-канала. Эквивалентно channel.subscribe(onMessage) для каждого канала.
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
boundedChannel.unsubscribe(handlers)¶
handlers<Object>подписчики каналовstart<Function>подписчик события startend<Function>подписчик события end
- Возвращает:
<boolean>true, если все обработчики сняты, иначеfalse.
Отписка от событий bounded-канала. Эквивалентно channel.unsubscribe(onMessage) на каждом канале.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
boundedChannel.run(context, fn[, thisArg[, ...args]])¶
context<Object>общий объект корреляции событийfn<Function>функция для обёртки трассировкойthisArg<any>значениеthisдля вызова...args<any>необязательные аргументы функции- Возвращает:
<any>результат вызоваfn
Трассирует синхронный вызов: события start и end вокруг выполнения. Функция выполняется через channel.runStores(context, ...) на канале start.
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
boundedChannel.withScope([context])¶
context<Object>общий объект корреляции событий- Возвращает:
<BoundedChannelScope>объект области сDisposable
Создаёт область для трассировки синхронной операции с явным управлением ресурсами (синтаксис using). Публикует события start и end, входит в привязанные хранилища и выполняет очистку при освобождении.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Класс: BoundedChannelScope¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Класс BoundedChannelScope — область с Disposable, создаваемая boundedChannel.withScope(context). Управляет жизненным циклом трассируемой операции, публикует события и контексты хранилищ.
Использовать только с синтаксисом using.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Каналы BoundedChannel¶
BoundedChannel состоит из двух каналов диагностики, описывающих жизненный цикл области, созданной синтаксисом using:
tracing:${name}:start— публикуется при выполнении оператораusing(создание области)tracing:${name}:end— публикуется при выходе из блока (освобождение области)
При использовании using с [boundedChannel.withScope([context])][] событие start публикуется сразу при входе в оператор, а end — автоматически при освобождении в конце блока. Все события разделяют один объект контекста, который при выполнении области можно дополнять полями вроде result.
Каналы TracingChannel¶
TracingChannel — набор нескольких diagnostics_channel, соответствующих этапам жизненного цикла одного трассируемого действия. Поведение разбито на пять каналов: start, end, asyncStart, asyncEnd и error. Одно трассируемое действие использует один и тот же объект события во всех точках — это удобно для корреляции (например через WeakMap).
При «завершении» задачи объект события дополняется полями result или error. Для синхронной задачи result — возвращаемое значение, error — исключение из функции. Для асинхронных функций с колбэком result — второй аргумент колбэка, а error — либо исключение, видимое в событии end, либо первый аргумент колбэка в событиях asyncStart или asyncEnd.
Чтобы граф трассировки был корректным, события следует публиковать только если подписчики уже есть до начала трассировки. Подписки, добавленные после старта, не получат события текущей трассировки — только последующих.
Имена каналов трассировки рекомендуется задавать по шаблону:
tracing:module.class.method:startилиtracing:module.function:starttracing:module.class.method:endилиtracing:module.function:endtracing:module.class.method:asyncStartилиtracing:module.function:asyncStarttracing:module.class.method:asyncEndилиtracing:module.function:asyncEndtracing:module.class.method:errorилиtracing:module.function:error
start(event)¶
- Имя:
tracing:${name}:start
Событие start — момент вызова функции. В данных события могут быть аргументы функции или любая информация, доступная в самом начале выполнения.
end(event)¶
- Имя:
tracing:${name}:end
Событие end — момент возврата значения из вызова функции. Для асинхронной функции это момент возврата промиса, а не внутреннего return в теле. Если трассируемая функция синхронна, поле result содержит возвращаемое значение; при ошибке может быть поле error.
Рекомендуется отдельно слушать событие error: одно трассируемое действие может породить несколько ошибок (например внутренняя асинхронная задача завершилась ошибкой до того, как синхронная часть выбросила исключение).
asyncStart(event)¶
- Имя:
tracing:${name}:asyncStart
Событие asyncStart — достижение колбэка или продолжения трассируемой функции. Здесь доступны аргументы колбэка и др., описывающие «результат» действия.
Для функций с колбэком первый аргумент присваивается полю error, если он не undefined и не null, второй — полю result.
Для промисов аргумент resolve попадает в result, аргумент reject — в error.
Снова рекомендуется слушать error отдельно по тем же причинам, что и для end.
asyncEnd(event)¶
- Имя:
tracing:${name}:asyncEnd
Событие asyncEnd — завершение колбэка асинхронной функции. Данные после asyncStart обычно не меняются, но полезно зафиксировать момент окончания колбэка.
error(event)¶
- Имя:
tracing:${name}:error
Событие error — любая ошибка трассируемой функции, синхронная или асинхронная. Исключение в синхронной части попадает в поле error и вызывает событие error. Ошибка из колбэка или отклонение промиса также попадают в error и вызывают событие.
Один вызов может сгенерировать несколько событий error — учитывайте это при обработке. Например, внутренняя асинхронная задача упала, затем синхронная часть выбросила исключение — будет два события error.
Встроенные каналы¶
Консоль¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'console.log'¶
args<any[]>
Генерируется при вызове console.log(). Передаётся массив аргументов вызова console.log().
Событие: 'console.info'¶
args<any[]>
Генерируется при вызове console.info(). Передаётся массив аргументов вызова console.info().
Событие: 'console.debug'¶
args<any[]>
Генерируется при вызове console.debug(). Передаётся массив аргументов вызова console.debug().
Событие: 'console.warn'¶
args<any[]>
Генерируется при вызове console.warn(). Передаётся массив аргументов вызова console.warn().
Событие: 'console.error'¶
args<any[]>
Генерируется при вызове console.error(). Передаётся массив аргументов вызова console.error().
HTTP¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'http.client.request.created'¶
request<http.ClientRequest>
Генерируется, когда клиент создаёт объект запроса. В отличие от http.client.request.start, событие до отправки запроса.
Событие: 'http.client.request.start'¶
request<http.ClientRequest>
Генерируется, когда клиент начинает запрос.
Событие: 'http.client.request.error'¶
request<http.ClientRequest>error<Error>
Генерируется при ошибке клиентского запроса.
Событие: 'http.client.response.finish'¶
request<http.ClientRequest>response<http.IncomingMessage>
Генерируется, когда клиент получил ответ.
Событие: 'http.server.request.start'¶
request<http.IncomingMessage>response<http.ServerResponse>socket<net.Socket>server<http.Server>
Генерируется, когда сервер получил запрос.
Событие: 'http.server.response.created'¶
request<http.IncomingMessage>response<http.ServerResponse>
Генерируется, когда сервер создал объект ответа. Событие до отправки ответа.
Событие: 'http.server.response.finish'¶
request<http.IncomingMessage>response<http.ServerResponse>socket<net.Socket>server<http.Server>
Генерируется, когда сервер отправил ответ.
HTTP/2¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'http2.client.stream.created'¶
stream<ClientHttp2Stream>headers<HTTP/2 Headers Object>
Генерируется при создании потока на клиенте.
Событие: 'http2.client.stream.start'¶
stream<ClientHttp2Stream>headers<HTTP/2 Headers Object>
Генерируется при старте потока на клиенте.
Событие: 'http2.client.stream.error'¶
stream<ClientHttp2Stream>error<Error>
Генерируется при ошибке обработки потока на клиенте.
Событие: 'http2.client.stream.finish'¶
stream<ClientHttp2Stream>headers<HTTP/2 Headers Object>flags<number>
Генерируется при получении потока на клиенте.
Событие: 'http2.client.stream.bodyChunkSent'¶
stream<ClientHttp2Stream>writev<boolean>data<Buffer>|<string>|<Buffer[]>|<Object[]>encoding<string>
Генерируется при отправке фрагмента тела потока клиента.
Событие: 'http2.client.stream.bodySent'¶
stream<ClientHttp2Stream>
Генерируется после полной отправки тела потока клиента.
Событие: 'http2.client.stream.close'¶
stream<ClientHttp2Stream>
Генерируется при закрытии потока на клиенте. Код ошибки HTTP/2 при закрытии доступен в stream.rstCode.
Событие: 'http2.server.stream.created'¶
stream<ServerHttp2Stream>headers<HTTP/2 Headers Object>
Генерируется при создании потока на сервере.
Событие: 'http2.server.stream.start'¶
stream<ServerHttp2Stream>headers<HTTP/2 Headers Object>
Генерируется при старте потока на сервере.
Событие: 'http2.server.stream.error'¶
stream<ServerHttp2Stream>error<Error>
Генерируется при ошибке обработки потока на сервере.
Событие: 'http2.server.stream.finish'¶
stream<ServerHttp2Stream>headers<HTTP/2 Headers Object>flags<number>
Генерируется при отправке потока с сервера.
Событие: 'http2.server.stream.close'¶
stream<ServerHttp2Stream>
Генерируется при закрытии потока на сервере. Код ошибки HTTP/2 при закрытии доступен в stream.rstCode.
Модули¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'module.require.start'¶
event<Object>со свойствами:id— аргументrequire(), имя модуля.parentFilename— файл модуля, вызвавшегоrequire(id).
Генерируется при выполнении require(). См. событие start.
Событие: 'module.require.end'¶
event<Object>со свойствами:id— аргументrequire(), имя модуля.parentFilename— файл модуля, вызвавшегоrequire(id).
Генерируется при возврате из require(). См. событие end.
Событие: 'module.require.error'¶
event<Object>со свойствами:id— аргументrequire(), имя модуля.parentFilename— файл модуля, вызвавшегоrequire(id).
error<Error>
Генерируется при ошибке require(). См. событие error.
Событие: 'module.import.asyncStart'¶
event<Object>со свойствами:id— аргументimport(), имя модуля.parentURL— URL модуля, вызвавшегоimport(id).
Генерируется при вызове import(). См. событие asyncStart.
Событие: 'module.import.asyncEnd'¶
event<Object>со свойствами:id— аргументimport(), имя модуля.parentURL— URL модуля, вызвавшегоimport(id).
Генерируется по завершении import(). См. событие asyncEnd.
Событие: 'module.import.error'¶
event<Object>со свойствами:id— аргументimport(), имя модуля.parentURL— URL модуля, вызвавшегоimport(id).
error<Error>
Генерируется при ошибке import(). См. событие error.
Сеть¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'net.client.socket'¶
socket<net.Socket>|<tls.TLSSocket>
Генерируется при создании нового клиентского TCP- или pipe-сокета.
Событие: 'net.server.socket'¶
socket<net.Socket>
Генерируется при приёме нового TCP- или pipe-подключения.
Событие: 'tracing:net.server.listen:asyncStart'¶
server<net.Server>options<Object>
Генерируется при вызове net.Server.listen(), до настройки порта или pipe.
Событие: 'tracing:net.server.listen:asyncEnd'¶
server<net.Server>
Генерируется после завершения net.Server.listen() — сервер готов принимать соединения.
Событие: 'tracing:net.server.listen:error'¶
server<net.Server>error<Error>
Генерируется при ошибке net.Server.listen().
UDP¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'udp.socket'¶
socket<dgram.Socket>
Генерируется при создании нового UDP-сокета.
Процесс¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'child_process'¶
process<ChildProcess>
Генерируется при создании нового дочернего процесса.
tracing:child_process.spawn:start
process<ChildProcess>options<Object>
Генерируется при вызове child_process.spawn(), до фактического запуска процесса.
tracing:child_process.spawn:end
process<ChildProcess>
Генерируется после успешного завершения child_process.spawn() — процесс создан.
tracing:child_process.spawn:error
process<ChildProcess>error<Error>
Генерируется при ошибке child_process.spawn().
Событие: 'execve'¶
execPath<string>args<string[]>env<string[]>
Генерируется при вызове process.execve().
Веб-блокировки¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Эти каналы генерируются при каждом вызове locks.request(). Подробнее о механизме веб-блокировок — worker_threads.locks.
Событие: 'locks.request.start'¶
Генерируется при инициации запроса блокировки, до её выдачи.
Событие: 'locks.request.grant'¶
Генерируется при успешной выдаче блокировки, непосредственно перед запуском колбэка.
Событие: 'locks.request.miss'¶
Генерируется, если ifAvailable равен true, блокировка сразу недоступна и колбэк вызывается с null вместо объекта Lock.
Событие: 'locks.request.end'¶
name<string>имя ресурса блокировкиmode<string>режим:'exclusive'или'shared'steal<boolean>используется ли семантика stealifAvailable<boolean>используется ли семантика ifAvailableerror<Error>| undefined ошибка из колбэка, если была
Генерируется по завершении запроса блокировки: успех колбэка, исключение или украденная блокировка.
Поток Worker¶
Стабильность: 1 – Экспериментальная
Фича изменяется и не допускается флагом командной строки. Может быть изменена или удалена в последующих версиях.
Событие: 'worker_threads'¶
worker<Worker>
Генерируется при создании нового потока worker.
