Dela via


SharedAccessSignatureAuthenticationProvider class

Tillhandahåller ett AuthenticationProvider objekt som kan skapas helt enkelt med en signatur för delad åtkomst och sedan används av enhetsklienten och transporteras för att autentisera med Azure IoT Hub-instansen.

Det SharedAccessSignatureAuthenticationProvider objektet förnyar inte signaturtoken för delad åtkomst automatiskt, så användaren måste mata in signaturtoken för icke-utgången delad åtkomst till det med hjälp av metoden updateSharedAccessSignature. För varje anrop till den här metoden genererar SharedAccessSignatureAuthenticationProvider en newTokenAvailable händelse som transporterna använder för att autentisera med Azure IoT Hub-instansen.

Extends

EventEmitter

Egenskaper

type

Ärvda egenskaper

captureRejections

Värde: booleska

Ändra standardalternativet captureRejections för alla nya EventEmitter objekt.

captureRejectionSymbol

Värde: Symbol.for('nodejs.rejection')

Se hur du skriver en anpassad rejection handler.

defaultMaxListeners

Som standard kan maximalt 10 lyssnare registreras för en enskild händelse. Den här gränsen kan ändras för enskilda EventEmitter-instanser med hjälp av metoden emitter.setMaxListeners(n). Om du vill ändra standardvärdet för allaEventEmitter instanser kan egenskapen events.defaultMaxListeners användas. Om det här värdet inte är ett positivt tal genereras en RangeError.

Var försiktig när du anger events.defaultMaxListeners eftersom ändringen påverkar allaEventEmitter instanser, inklusive de som skapades innan ändringen gjordes. Men att anropa emitter.setMaxListeners(n) har fortfarande företräde framför events.defaultMaxListeners.

Detta är inte en hård gräns. Den EventEmitter instansen gör att fler lyssnare kan läggas till, men skickar en spårningsvarning till stderr som anger att en "möjlig EventEmitter-minnesläcka" har identifierats. För en enskild EventEmitterkan metoderna emitter.getMaxListeners() och emitter.setMaxListeners() användas för att tillfälligt undvika den här varningen:

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));
});

Den --trace-warnings kommandoradsflaggan kan användas för att visa stackspårningen för sådana varningar.

Den avgivna varningen kan inspekteras med process.on('warning') och har ytterligare egenskaper emitter, typeoch count, med hänvisning till händelseemitterarens instans, händelsens namn respektive antalet anslutna lyssnare. Egenskapen name är inställd på 'MaxListenersExceededWarning'.

errorMonitor

Denna symbol ska användas för att installera en lyssnare för att endast övervaka 'error' händelser. Lyssnare som installeras med den här symbolen anropas innan de vanliga 'error' lyssnarna anropas.

När du installerar en lyssnare med den här symbolen ändras inte beteendet när en 'error' händelse har genererats. Därför kraschar processen fortfarande om ingen vanlig 'error' lyssnaren är installerad.

Metoder

fromSharedAccessSignature(string)

Skapar en ny SharedAccessSignatureAuthenticationProvider från en anslutningssträng

getDeviceCredentials()
getDeviceCredentials(Callback<TransportConfig>)

Den här metoden används av transporterna för att hämta de senaste enhetsautentiseringsuppgifterna i form av ett TransportConfig objekt.

stop()

gör ingenting och returnerar – det här är en del av api:et för tokenbaserad autentiseringsprovider, men det finns inga resurser att stoppa/frigöra här.

updateSharedAccessSignature(string)

Uppdaterar signaturtoken för delad åtkomst som transporterna ska använda för att autentisera. När den anropas genererar SharedAccessSignatureAuthenticationProvider en newTokenAvailable händelse som transporterna sedan kan använda för att autentisera med Azure IoT Hub-instansen.

Ärvda metoder

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

Lyssnar en gång på händelsen abort på den angivna signal.

Att lyssna på den abort händelsen vid avbrutna signaler är osäkert och kan leda till resursläckor eftersom en annan tredje part med signalen kan anropa e.stopImmediatePropagation(). Tyvärr kan Node.js inte ändra detta eftersom det skulle bryta mot webbstandarden. Dessutom gör det ursprungliga API:et det enkelt att glömma att ta bort lyssnare.

Med det här API:et kan du på ett säkert sätt använda AbortSignali Node.js API:er genom att lösa dessa två problem genom att lyssna på händelsen så att stopImmediatePropagation inte hindrar lyssnaren från att köras.

Returnerar en disponibel fil så att den kan avsluta prenumerationen på ett enklare sätt.

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)

Alias för emitter.on(eventName, listener).

emit<K>(string | symbol, AnyRest)

Anropar synkront var och en av lyssnarna som registrerats för händelsen med namnet eventName, i den ordning de registrerades och skickar de angivna argumenten till var och en.

Returnerar true om händelsen hade lyssnare, false annars.

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()

Returnerar en matris som visar de händelser som sändaren har registrerade lyssnare för. Värdena i matrisen är strängar eller 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)

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet eventName.

För EventEmitterfungerar detta exakt som att anropa .listeners på emittern.

För EventTargetär det här det enda sättet att hämta händelselyssnare för händelsemålet. Detta är användbart för felsökning och diagnostik.

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()

Returnerar det aktuella maximala lyssnarvärdet för EventEmitter som antingen anges av emitter.setMaxListeners(n) eller som standard till defaultMaxListeners.

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

Returnerar den för närvarande angivna maximala mängden lyssnare.

För EventEmitterfungerar detta exakt som att anropa .getMaxListeners på emittern.

För EventTargetär det här det enda sättet att få maximalt antal händelselyssnare för händelsemålet. Om antalet händelsehanterare på en enskild EventTarget överskrider maxuppsättningen skriver EventTarget ut en varning.

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)

En klassmetod som returnerar antalet lyssnare för den angivna eventName som registrerats på den angivna 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)

Returnerar antalet lyssnare som lyssnar efter händelsen med namnet eventName. Om listener anges returneras hur många gånger lyssnaren finns i listan över lyssnarna för händelsen.

listeners<K>(string | symbol)

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet 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)

Alias för 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

Returnerar en AsyncIterator som itererar eventName händelser. Det utlöser om EventEmitter genererar 'error'. Den tar bort alla lyssnare när du avslutar loopen. Den value som returneras av varje iteration är en matris som består av de utgivna händelseargumenten.

En AbortSignal kan användas för att avbryta väntan på händelser:

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());

Använd alternativet close för att ange en matris med händelsenamn som avslutar iterationen:

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)

Lägger till funktionen listener i slutet av lyssnarmatrisen för händelsen med namnet eventName. Inga kontroller görs för att se om listener redan har lagts till. Flera anrop som skickar samma kombination av eventName och listener resulterar i att listener läggs till och anropas flera gånger.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

Som standard anropas händelselyssnare i den ordning de läggs till. Metoden emitter.prependListener() kan användas som ett alternativ för att lägga till händelselyssnaren i början av lyssnarmatrisen.

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)

Skapar en Promise som uppfylls när EventEmitter genererar den angivna händelsen eller som avvisas om EventEmitter genererar 'error' i väntan. Den Promise löser med en matris med alla argument som genereras till den angivna händelsen.

Den här metoden är avsiktligt generisk och fungerar med webbplattformen EventTarget-gränssnittet, som inte har någon särskild'error' händelsesemantik och inte lyssnar på 'error' händelsen.

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);
}

Den särskilda hanteringen av händelsen 'error' används bara när events.once() används för att vänta på en annan händelse. Om events.once() används för att vänta på själva händelsen "error' behandlas den som någon annan typ av händelse utan särskild hantering:

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

En AbortSignal kan användas för att avbryta väntan på händelsen:

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)

Lägger till en engångsfunktion förlistener för händelsen med namnet eventName. Nästa gång eventName utlöses tas lyssnaren bort och anropas sedan.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

Som standard anropas händelselyssnare i den ordning de läggs till. Metoden emitter.prependOnceListener() kan användas som ett alternativ för att lägga till händelselyssnaren i början av lyssnarmatrisen.

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)

Lägger till funktionen listener i början av lyssnarmatrisen för händelsen med namnet eventName. Inga kontroller görs för att se om listener redan har lagts till. Flera anrop som skickar samma kombination av eventName och listener resulterar i att listener läggs till och anropas flera gånger.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Lägger till en engångsfunktion förlistener för händelsen med namnet eventName till början av lyssnarmatrisen. Nästa gång eventName utlöses tas lyssnaren bort och anropas sedan.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

rawListeners<K>(string | symbol)

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet eventName, inklusive eventuella omslutningar (till exempel de som skapats av .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)

Tar bort alla lyssnare eller de som anges eventName.

Det är dålig praxis att ta bort lyssnare som lagts till någon annanstans i koden, särskilt när den EventEmitter instansen skapades av någon annan komponent eller modul (t.ex. sockets eller filströmmar).

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Tar bort den angivna listener från lyssnarmatrisen för händelsen med namnet eventName.

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

removeListener() tar högst bort en instans av en lyssnare från lyssnarmatrisen. Om en enskild lyssnare har lagts till flera gånger i lyssnarmatrisen för den angivna eventNamemåste removeListener() anropas flera gånger för att ta bort varje instans.

När en händelse har genererats anropas alla lyssnare som är anslutna till den vid tidpunkten för avsändande i ordning. Detta innebär att alla removeListener()- eller removeAllListeners()-anrop efter avger och innan den senaste lyssnaren slutför körningen inte tar bort dem frånemit() pågår. Efterföljande händelser fungerar som förväntat.

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

Eftersom lyssnare hanteras med hjälp av en intern matris ändras positionsindexen för alla lyssnare som registrerats när lyssnaren tas bort. Detta påverkar inte i vilken ordning lyssnare anropas, men det innebär att alla kopior av lyssnarmatrisen som returneras av metoden emitter.listeners() måste återskapas.

När en enskild funktion har lagts till som hanterare flera gånger för en enskild händelse (som i exemplet nedan) tar removeListener() bort den senast tillagda instansen. I exemplet tas once('ping') lyssnaren bort:

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');

Returnerar en referens till EventEmitter, så att anrop kan länkas.

setMaxListeners(number)

Som standard skriver EventEmitterut en varning om fler än 10 lyssnare läggs till för en viss händelse. Det här är ett användbart standardvärde som hjälper dig att hitta minnesläckor. Med metoden emitter.setMaxListeners() kan gränsen ändras för den här specifika EventEmitter instansen. Värdet kan anges till Infinity (eller 0) för att ange ett obegränsat antal lyssnare.

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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)

Egenskapsinformation

type

type: AuthenticationType

Egenskapsvärde

AuthenticationType

Information om ärvda egenskaper

captureRejections

Värde: booleska

Ändra standardalternativet captureRejections för alla nya EventEmitter objekt.

static captureRejections: boolean

Egenskapsvärde

boolean

ärvs från EventEmitter.captureRejections

captureRejectionSymbol

Värde: Symbol.for('nodejs.rejection')

Se hur du skriver en anpassad rejection handler.

static captureRejectionSymbol: typeof captureRejectionSymbol

Egenskapsvärde

typeof captureRejectionSymbol

ärvd från EventEmitter.captureRejectionSymbol

defaultMaxListeners

Som standard kan maximalt 10 lyssnare registreras för en enskild händelse. Den här gränsen kan ändras för enskilda EventEmitter-instanser med hjälp av metoden emitter.setMaxListeners(n). Om du vill ändra standardvärdet för allaEventEmitter instanser kan egenskapen events.defaultMaxListeners användas. Om det här värdet inte är ett positivt tal genereras en RangeError.

Var försiktig när du anger events.defaultMaxListeners eftersom ändringen påverkar allaEventEmitter instanser, inklusive de som skapades innan ändringen gjordes. Men att anropa emitter.setMaxListeners(n) har fortfarande företräde framför events.defaultMaxListeners.

Detta är inte en hård gräns. Den EventEmitter instansen gör att fler lyssnare kan läggas till, men skickar en spårningsvarning till stderr som anger att en "möjlig EventEmitter-minnesläcka" har identifierats. För en enskild EventEmitterkan metoderna emitter.getMaxListeners() och emitter.setMaxListeners() användas för att tillfälligt undvika den här varningen:

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));
});

Den --trace-warnings kommandoradsflaggan kan användas för att visa stackspårningen för sådana varningar.

Den avgivna varningen kan inspekteras med process.on('warning') och har ytterligare egenskaper emitter, typeoch count, med hänvisning till händelseemitterarens instans, händelsens namn respektive antalet anslutna lyssnare. Egenskapen name är inställd på 'MaxListenersExceededWarning'.

static defaultMaxListeners: number

Egenskapsvärde

number

ärvd från EventEmitter.defaultMaxListeners

errorMonitor

Denna symbol ska användas för att installera en lyssnare för att endast övervaka 'error' händelser. Lyssnare som installeras med den här symbolen anropas innan de vanliga 'error' lyssnarna anropas.

När du installerar en lyssnare med den här symbolen ändras inte beteendet när en 'error' händelse har genererats. Därför kraschar processen fortfarande om ingen vanlig 'error' lyssnaren är installerad.

static errorMonitor: typeof errorMonitor

Egenskapsvärde

typeof errorMonitor

ärvd från EventEmitter.errorMonitor

Metodinformation

fromSharedAccessSignature(string)

Skapar en ny SharedAccessSignatureAuthenticationProvider från en anslutningssträng

static function fromSharedAccessSignature(sharedAccessSignature: string): SharedAccessSignatureAuthenticationProvider

Parametrar

sharedAccessSignature

string

En signatursträng för delad åtkomst som innehåller de obligatoriska parametrarna för autentisering med IoT-hubben.

Returer

getDeviceCredentials()

function getDeviceCredentials(): Promise<TransportConfig>

Returer

Promise<TransportConfig>

getDeviceCredentials(Callback<TransportConfig>)

Den här metoden används av transporterna för att hämta de senaste enhetsautentiseringsuppgifterna i form av ett TransportConfig objekt.

function getDeviceCredentials(callback?: Callback<TransportConfig>)

Parametrar

callback

Callback<TransportConfig>

valfri funktion som anropas med antingen ett fel eller en uppsättning autentiseringsuppgifter för enheten som kan användas för att autentisera med IoT-hubben.

stop()

gör ingenting och returnerar – det här är en del av api:et för tokenbaserad autentiseringsprovider, men det finns inga resurser att stoppa/frigöra här.

function stop()

updateSharedAccessSignature(string)

Uppdaterar signaturtoken för delad åtkomst som transporterna ska använda för att autentisera. När den anropas genererar SharedAccessSignatureAuthenticationProvider en newTokenAvailable händelse som transporterna sedan kan använda för att autentisera med Azure IoT Hub-instansen.

function updateSharedAccessSignature(sharedAccessSignature: string)

Parametrar

sharedAccessSignature

string

En signatursträng för delad åtkomst som innehåller de obligatoriska parametrarna för autentisering med IoT-hubben.

Ärvd metodinformation

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

Lyssnar en gång på händelsen abort på den angivna signal.

Att lyssna på den abort händelsen vid avbrutna signaler är osäkert och kan leda till resursläckor eftersom en annan tredje part med signalen kan anropa e.stopImmediatePropagation(). Tyvärr kan Node.js inte ändra detta eftersom det skulle bryta mot webbstandarden. Dessutom gör det ursprungliga API:et det enkelt att glömma att ta bort lyssnare.

Med det här API:et kan du på ett säkert sätt använda AbortSignali Node.js API:er genom att lösa dessa två problem genom att lyssna på händelsen så att stopImmediatePropagation inte hindrar lyssnaren från att köras.

Returnerar en disponibel fil så att den kan avsluta prenumerationen på ett enklare sätt.

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

Parametrar

signal

AbortSignal

resource

(event: Event) => void

Returer

Disposable

Disponibel som tar bort abort lyssnaren.

ärvd från EventEmitter.addAbortListener

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

Alias för emitter.on(eventName, listener).

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

Parametrar

eventName

string | symbol

listener

(args: any[]) => void

Returer

ärvs från EventEmitter.addListener

emit<K>(string | symbol, AnyRest)

Anropar synkront var och en av lyssnarna som registrerats för händelsen med namnet eventName, i den ordning de registrerades och skickar de angivna argumenten till var och en.

Returnerar true om händelsen hade lyssnare, false annars.

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

Parametrar

eventName

string | symbol

args

AnyRest

Returer

boolean

ärvd från EventEmitter.emit

eventNames()

Returnerar en matris som visar de händelser som sändaren har registrerade lyssnare för. Värdena i matrisen är strängar eller 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)[]

Returer

(string | symbol)[]

ärvd från EventEmitter.eventNames

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

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet eventName.

För EventEmitterfungerar detta exakt som att anropa .listeners på emittern.

För EventTargetär det här det enda sättet att hämta händelselyssnare för händelsemålet. Detta är användbart för felsökning och diagnostik.

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

Parametrar

emitter

EventEmitter<DefaultEventMap> | EventTarget

name

string | symbol

Returer

Function[]

ärvd från EventEmitter.getEventListeners

getMaxListeners()

Returnerar det aktuella maximala lyssnarvärdet för EventEmitter som antingen anges av emitter.setMaxListeners(n) eller som standard till defaultMaxListeners.

function getMaxListeners(): number

Returer

number

ärvd från EventEmitter.getMaxListeners

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

Returnerar den för närvarande angivna maximala mängden lyssnare.

För EventEmitterfungerar detta exakt som att anropa .getMaxListeners på emittern.

För EventTargetär det här det enda sättet att få maximalt antal händelselyssnare för händelsemålet. Om antalet händelsehanterare på en enskild EventTarget överskrider maxuppsättningen skriver EventTarget ut en varning.

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

Parametrar

emitter

EventEmitter<DefaultEventMap> | EventTarget

Returer

number

ärvd från EventEmitter.getMaxListeners

listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

Varning

Det här API:et är nu inaktuellt.

Since v3.2.0 - Use listenerCount instead.

En klassmetod som returnerar antalet lyssnare för den angivna eventName som registrerats på den angivna 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

Parametrar

emitter

EventEmitter<DefaultEventMap>

Den emitter som ska frågas

eventName

string | symbol

Händelsenamnet

Returer

number

ärvd från EventEmitter.listenerCount

listenerCount<K>(string | symbol, Function)

Returnerar antalet lyssnare som lyssnar efter händelsen med namnet eventName. Om listener anges returneras hur många gånger lyssnaren finns i listan över lyssnarna för händelsen.

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

Parametrar

eventName

string | symbol

Namnet på händelsen som lyssnas efter

listener

Function

Händelsehanterarfunktionen

Returer

number

ärvd från EventEmitter.listenerCount

listeners<K>(string | symbol)

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet 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[]

Parametrar

eventName

string | symbol

Returer

Function[]

ärvd från EventEmitter.listeners

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

Alias för emitter.removeListener().

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

Parametrar

eventName

string | symbol

listener

(args: any[]) => void

Returer

ärvd från 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

Returnerar en AsyncIterator som itererar eventName händelser. Det utlöser om EventEmitter genererar 'error'. Den tar bort alla lyssnare när du avslutar loopen. Den value som returneras av varje iteration är en matris som består av de utgivna händelseargumenten.

En AbortSignal kan användas för att avbryta väntan på händelser:

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());

Använd alternativet close för att ange en matris med händelsenamn som avslutar iterationen:

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>

Parametrar

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterIteratorOptions

Returer

AsyncIterator<any[], any, any>

En AsyncIterator som itererar eventName händelser som genereras av emitter

ärvd från EventEmitter.on

on(EventTarget, string, StaticEventEmitterIteratorOptions)

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

Parametrar

emitter

EventTarget

eventName

string

options

StaticEventEmitterIteratorOptions

Returer

AsyncIterator<any[], any, any>

ärvd från EventEmitter.on

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

Lägger till funktionen listener i slutet av lyssnarmatrisen för händelsen med namnet eventName. Inga kontroller görs för att se om listener redan har lagts till. Flera anrop som skickar samma kombination av eventName och listener resulterar i att listener läggs till och anropas flera gånger.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

Som standard anropas händelselyssnare i den ordning de läggs till. Metoden emitter.prependListener() kan användas som ett alternativ för att lägga till händelselyssnaren i början av lyssnarmatrisen.

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

Parametrar

eventName

string | symbol

Namnet på händelsen.

listener

(args: any[]) => void

Återanropsfunktionen

Returer

ärvd från EventEmitter.on

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

Skapar en Promise som uppfylls när EventEmitter genererar den angivna händelsen eller som avvisas om EventEmitter genererar 'error' i väntan. Den Promise löser med en matris med alla argument som genereras till den angivna händelsen.

Den här metoden är avsiktligt generisk och fungerar med webbplattformen EventTarget-gränssnittet, som inte har någon särskild'error' händelsesemantik och inte lyssnar på 'error' händelsen.

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);
}

Den särskilda hanteringen av händelsen 'error' används bara när events.once() används för att vänta på en annan händelse. Om events.once() används för att vänta på själva händelsen "error' behandlas den som någon annan typ av händelse utan särskild hantering:

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

En AbortSignal kan användas för att avbryta väntan på händelsen:

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

Parametrar

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterOptions

Returer

Promise<any[]>

ärvd från EventEmitter.once

once(EventTarget, string, StaticEventEmitterOptions)

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

Parametrar

emitter

EventTarget

eventName

string

options

StaticEventEmitterOptions

Returer

Promise<any[]>

ärvd från EventEmitter.once

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

Lägger till en engångsfunktion förlistener för händelsen med namnet eventName. Nästa gång eventName utlöses tas lyssnaren bort och anropas sedan.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

Som standard anropas händelselyssnare i den ordning de läggs till. Metoden emitter.prependOnceListener() kan användas som ett alternativ för att lägga till händelselyssnaren i början av lyssnarmatrisen.

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

Parametrar

eventName

string | symbol

Namnet på händelsen.

listener

(args: any[]) => void

Återanropsfunktionen

Returer

ärvd från EventEmitter.once

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

Lägger till funktionen listener i början av lyssnarmatrisen för händelsen med namnet eventName. Inga kontroller görs för att se om listener redan har lagts till. Flera anrop som skickar samma kombination av eventName och listener resulterar i att listener läggs till och anropas flera gånger.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Parametrar

eventName

string | symbol

Namnet på händelsen.

listener

(args: any[]) => void

Återanropsfunktionen

Returer

ärvd från EventEmitter.prependListener

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

Lägger till en engångsfunktion förlistener för händelsen med namnet eventName till början av lyssnarmatrisen. Nästa gång eventName utlöses tas lyssnaren bort och anropas sedan.

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

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Parametrar

eventName

string | symbol

Namnet på händelsen.

listener

(args: any[]) => void

Återanropsfunktionen

Returer

ärvd från EventEmitter.prependOnceListener

rawListeners<K>(string | symbol)

Returnerar en kopia av matrisen med lyssnare för händelsen med namnet eventName, inklusive eventuella omslutningar (till exempel de som skapats av .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[]

Parametrar

eventName

string | symbol

Returer

Function[]

ärvd från EventEmitter.rawListeners

removeAllListeners(string | symbol)

Tar bort alla lyssnare eller de som anges eventName.

Det är dålig praxis att ta bort lyssnare som lagts till någon annanstans i koden, särskilt när den EventEmitter instansen skapades av någon annan komponent eller modul (t.ex. sockets eller filströmmar).

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Parametrar

eventName

string | symbol

Returer

ärvd från EventEmitter.removeAllListeners

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

Tar bort den angivna listener från lyssnarmatrisen för händelsen med namnet eventName.

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

removeListener() tar högst bort en instans av en lyssnare från lyssnarmatrisen. Om en enskild lyssnare har lagts till flera gånger i lyssnarmatrisen för den angivna eventNamemåste removeListener() anropas flera gånger för att ta bort varje instans.

När en händelse har genererats anropas alla lyssnare som är anslutna till den vid tidpunkten för avsändande i ordning. Detta innebär att alla removeListener()- eller removeAllListeners()-anrop efter avger och innan den senaste lyssnaren slutför körningen inte tar bort dem frånemit() pågår. Efterföljande händelser fungerar som förväntat.

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

Eftersom lyssnare hanteras med hjälp av en intern matris ändras positionsindexen för alla lyssnare som registrerats när lyssnaren tas bort. Detta påverkar inte i vilken ordning lyssnare anropas, men det innebär att alla kopior av lyssnarmatrisen som returneras av metoden emitter.listeners() måste återskapas.

När en enskild funktion har lagts till som hanterare flera gånger för en enskild händelse (som i exemplet nedan) tar removeListener() bort den senast tillagda instansen. I exemplet tas once('ping') lyssnaren bort:

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');

Returnerar en referens till EventEmitter, så att anrop kan länkas.

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

Parametrar

eventName

string | symbol

listener

(args: any[]) => void

Returer

ärvd från EventEmitter.removeListener

setMaxListeners(number)

Som standard skriver EventEmitterut en varning om fler än 10 lyssnare läggs till för en viss händelse. Det här är ett användbart standardvärde som hjälper dig att hitta minnesläckor. Med metoden emitter.setMaxListeners() kan gränsen ändras för den här specifika EventEmitter instansen. Värdet kan anges till Infinity (eller 0) för att ange ett obegränsat antal lyssnare.

Returnerar en referens till EventEmitter, så att anrop kan länkas.

function setMaxListeners(n: number): SharedAccessSignatureAuthenticationProvider

Parametrar

n

number

Returer

Ärvd från 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)[])

Parametrar

n

number

Ett icke-negativt tal. Maximalt antal lyssnare per EventTarget händelse.

eventTargets

(EventEmitter<DefaultEventMap> | EventTarget)[]

Noll eller fler {EventTarget} eller {EventEmitter}-instanser. Om ingen anges anges n som standard max för alla nyligen skapade {EventTarget}- och {EventEmitter}-objekt.

Ärvd från EventEmitter.setMaxListeners

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

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

Parametrar

error

Error

event

string | symbol

args

AnyRest

ärvd från EventEmitter.__@captureRejectionSymbol@141