Client class

يستخدم عميل جهاز IoT Hub لتوصيل جهاز بمركز Azure IoT.

يجب على مستخدمي SDK استدعاء أحد أساليب المصنع، منConnectionString أو منSharedAccessSignature لإنشاء عميل جهاز IoT Hub.

يمتد

InternalClient

المنشئون

Client(DeviceTransport, string, BlobUploadClient, FileUploadInterface)

الخصائص الموروثة

captureRejections

القيمة: المنطقية

تغيير خيار captureRejections الافتراضي على كافة كائنات EventEmitter الجديدة.

captureRejectionSymbol

القيمة: Symbol.for('nodejs.rejection')

راجع كيفية كتابة rejection handlerمخصص .

defaultMaxListeners

بشكل افتراضي، يمكن تسجيل وحدة استماع 10 كحد أقصى لأي حدث واحد. يمكن تغيير هذا الحد لمثيلات EventEmitter الفردية باستخدام أسلوب emitter.setMaxListeners(n). لتغيير الإعداد الافتراضي كافة المثيلاتEventEmitter، يمكن استخدام خاصية events.defaultMaxListeners. إذا لم تكن هذه القيمة رقما موجبا، يتم طرح RangeError.

كن حذرا عند تعيين events.defaultMaxListeners لأن التغيير يؤثر على جميع مثيلاتEventEmitter، بما في ذلك تلك التي تم إنشاؤها قبل إجراء التغيير. ومع ذلك، لا يزال استدعاء emitter.setMaxListeners(n) له الأسبقية على events.defaultMaxListeners.

هذا ليس حدا صعبا. سيسمح مثيل EventEmitter بإضافة المزيد من المستمعين ولكن سيتم إخراج تحذير تتبع إلى stderr يشير إلى أنه تم الكشف عن "تسرب محتمل لذاكرة EventEmitter". بالنسبة لأي EventEmitterمفردة، يمكن استخدام أساليب emitter.getMaxListeners()emitter.setMaxListeners() لتجنب هذا التحذير مؤقتا:

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

يمكن استخدام علامة سطر الأوامر --trace-warnings لعرض تتبع المكدس لمثل هذه التحذيرات.

يمكن فحص التحذير المنبعث باستخدام process.on('warning') وسيكون له خصائص emittertypecount الإضافية، مع الإشارة إلى مثيل انبعاث الحدث واسم الحدث وعدد المستمعين المرفقين، على التوالي. تم تعيين الخاصية name الخاصة به إلى 'MaxListenersExceededWarning'.

errorMonitor

يجب استخدام هذا الرمز لتثبيت وحدة استماع لمراقبة الأحداث 'error' فقط. يتم استدعاء وحدات الاستماع المثبتة باستخدام هذا الرمز قبل استدعاء وحدات الاستماع 'error' العادية.

لا يؤدي تثبيت وحدة استماع باستخدام هذا الرمز إلى تغيير السلوك بمجرد إصدار حدث 'error'. لذلك، ستستمر العملية في التعطل إذا لم يتم تثبيت وحدة استماع 'error' عادية.

الأساليب

close()
close(Callback<Disconnected>)

إغلاق اتصال النقل وإتلاف موارد العميل.

ملاحظة: بعد استدعاء هذا الأسلوب، لا يمكن إعادة استخدام كائن العميل.

fromAuthenticationProvider(AuthenticationProvider, any)

إنشاء عميل جهاز IoT Hub من أسلوب المصادقة المحدد واستخدام نوع النقل المحدد.

fromConnectionString(string, any)

إنشاء عميل جهاز IoT Hub من سلسلة الاتصال المحددة باستخدام نوع النقل المحدد.

fromSharedAccessSignature(string, any)

إنشاء عميل جهاز IoT Hub من توقيع الوصول المشترك المحدد باستخدام نوع النقل المحدد.

getBlobSharedAccessSignature(string)
getBlobSharedAccessSignature(string, Callback<UploadParams>)

يحصل getBlobSharedAccessSignature على رمز SAS المميز لحساب التخزين المرتبط من IoT Hub

notifyBlobUploadStatus(string, boolean, number, string)
notifyBlobUploadStatus(string, boolean, number, string, ErrorCallback)

يرسل أسلوب notifyBlobUploadStatus IoT Hub نتيجة تحميل كائن ثنائي كبير الحجم.

onDeviceMethod(string, (request: DeviceMethodRequest, response: DeviceMethodResponse) => void)

تسجيل رد اتصال لأسلوب يسمى methodName.

setOptions(DeviceClientOptions)
setOptions(DeviceClientOptions, Callback<TransportConfigured>)
uploadToBlob(string, Stream, number)
uploadToBlob(string, Stream, number, ErrorCallback)

يقوم أسلوب uploadToBlob بتحميل دفق إلى كائن ثنائي كبير الحجم.

الأساليب المتوارثة

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

يستمع مرة واحدة إلى الحدث abort على signalالمتوفرة .

الاستماع إلى الحدث abort على إشارات إحباط غير آمن وقد يؤدي إلى تسرب الموارد حيث يمكن لجهة خارجية أخرى مع الإشارة الاتصال e.stopImmediatePropagation(). للأسف لا يمكن Node.js تغيير هذا لأنه قد ينتهك معيار الويب. بالإضافة إلى ذلك، تجعل واجهة برمجة التطبيقات الأصلية من السهل نسيان إزالة المستمعين.

تسمح واجهة برمجة التطبيقات هذه بأمان باستخدام AbortSignals في واجهات برمجة التطبيقات Node.js عن طريق حل هاتين المشكلتين عن طريق الاستماع إلى الحدث بحيث لا يمنع 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) أو الإعدادات الافتراضية إلى 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 التي يتم إرجاعها بواسطة كل تكرار عبارة عن صفيف يتكون من وسيطات الحدث المنبعثة.

يمكن استخدام 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 بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

بشكل افتراضي، يتم استدعاء مستمعي الأحداث بالترتيب الذي تتم إضافتهم به. يمكن استخدام أسلوب emitter.prependListener() كبديل لإضافة مستمع الحدث إلى بداية صفيف المستمعين.

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

إنشاء Promise يتم تنفيذه عند إصدار EventEmitter للحدث المحدد أو يتم رفضه إذا انبعث EventEmitter'error' أثناء الانتظار. سيتم حل Promise مع صفيف من كافة الوسيطات المنبعثة إلى الحدث المحدد.

هذه الطريقة عامة عمدا وتعمل مع النظام الأساسي للويب واجهة EventTarget، والتي لا تحتوي على دلالات أحداث'error' خاصة ولا تستمع إلى الحدث 'error'.

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

const ee = new EventEmitter();

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

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

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

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

يتم استخدام المعالجة الخاصة للحدث 'error' فقط عند استخدام events.once() لانتظار حدث آخر. إذا تم استخدام events.once() لانتظار الحدثerror' نفسه، التعامل معه كأي نوع آخر من الأحداث دون معالجة خاصة:

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

const ee = new EventEmitter();

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

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

// Prints: ok boom

يمكن استخدام AbortSignal لإلغاء انتظار الحدث:

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

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

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

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

إضافة دالة لمرة واحدة للحدث المسمى . في المرة التالية التي يتم فيها تشغيل eventName، تتم إزالة وحدة الاستماع هذه ثم استدعاؤها.

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

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

بشكل افتراضي، يتم استدعاء مستمعي الأحداث بالترتيب الذي تتم إضافتهم به. يمكن استخدام أسلوب emitter.prependOnceListener() كبديل لإضافة مستمع الحدث إلى بداية صفيف المستمعين.

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

إضافة الدالة إلى بداية من صفيف المستمعين للحدث المسمى . لا يتم إجراء أي فحوصات لمعرفة ما إذا كان قد تمت إضافة listener بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة 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)

بشكل افتراضي، ستقوم EventEmitters بطباعة تحذير إذا تمت إضافة أكثر من 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)

تفاصيل المنشئ

Client(DeviceTransport, string, BlobUploadClient, FileUploadInterface)

new Client(transport: DeviceTransport, connStr?: string, blobUploadClient?: BlobUploadClient, fileUploadApi?: FileUploadInterface)

المعلمات

transport
DeviceTransport

كائن ينفذ الواجهة المتوقعة لعنصر نقل، على سبيل المثال، http.

connStr

string

سلسلة اتصال (اختيارية: عند عدم توفيرها، يجب استدعاء updateSharedAccessSignature لتعيين الرمز المميز SharedAccessSignature مباشرة).

blobUploadClient

BlobUploadClient

كائن قادر على تحميل دفق إلى كائن ثنائي كبير الحجم.

fileUploadApi

FileUploadInterface

كائن يستخدم للتواصل مع IoT Hub للإجراءات ذات الصلة ب Blob Storage.

تفاصيل الخاصية الموروثة

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. إذا لم تكن هذه القيمة رقما موجبا، يتم طرح RangeError.

كن حذرا عند تعيين events.defaultMaxListeners لأن التغيير يؤثر على جميع مثيلاتEventEmitter، بما في ذلك تلك التي تم إنشاؤها قبل إجراء التغيير. ومع ذلك، لا يزال استدعاء emitter.setMaxListeners(n) له الأسبقية على events.defaultMaxListeners.

هذا ليس حدا صعبا. سيسمح مثيل EventEmitter بإضافة المزيد من المستمعين ولكن سيتم إخراج تحذير تتبع إلى stderr يشير إلى أنه تم الكشف عن "تسرب محتمل لذاكرة EventEmitter". بالنسبة لأي EventEmitterمفردة، يمكن استخدام أساليب emitter.getMaxListeners()emitter.setMaxListeners() لتجنب هذا التحذير مؤقتا:

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

يمكن استخدام علامة سطر الأوامر --trace-warnings لعرض تتبع المكدس لمثل هذه التحذيرات.

يمكن فحص التحذير المنبعث باستخدام process.on('warning') وسيكون له خصائص emittertypecount الإضافية، مع الإشارة إلى مثيل انبعاث الحدث واسم الحدث وعدد المستمعين المرفقين، على التوالي. تم تعيين الخاصية 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>)

إغلاق اتصال النقل وإتلاف موارد العميل.

ملاحظة: بعد استدعاء هذا الأسلوب، لا يمكن إعادة استخدام كائن العميل.

function close(closeCallback?: Callback<Disconnected>)

المعلمات

closeCallback

Callback<Disconnected>

دالة اختيارية لاستدعاء بمجرد قطع اتصال النقل وإغلاق العميل.

fromAuthenticationProvider(AuthenticationProvider, any)

إنشاء عميل جهاز IoT Hub من أسلوب المصادقة المحدد واستخدام نوع النقل المحدد.

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

المعلمات

authenticationProvider

AuthenticationProvider

الكائن المستخدم للحصول على معلمات المصادقة لمركز IoT.

transportCtor

any

بروتوكول النقل المستخدم للاتصال بمركز IoT.

المرتجعات

fromConnectionString(string, any)

إنشاء عميل جهاز IoT Hub من سلسلة الاتصال المحددة باستخدام نوع النقل المحدد.

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

المعلمات

connStr

string

سلسلة اتصال تغلف أذونات "اتصال الجهاز" على مركز IoT.

transportCtor

any

منشئ النقل.

المرتجعات

fromSharedAccessSignature(string, any)

إنشاء عميل جهاز IoT Hub من توقيع الوصول المشترك المحدد باستخدام نوع النقل المحدد.

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

المعلمات

sharedAccessSignature

string

توقيع وصول مشترك يغلف أذونات "اتصال الجهاز" على مركز IoT.

transportCtor

any

المرتجعات

getBlobSharedAccessSignature(string)

function getBlobSharedAccessSignature(blobName: string): Promise<UploadParams>

المعلمات

blobName

string

المرتجعات

Promise<UploadParams>

getBlobSharedAccessSignature(string, Callback<UploadParams>)

يحصل getBlobSharedAccessSignature على رمز SAS المميز لحساب التخزين المرتبط من IoT Hub

function getBlobSharedAccessSignature(blobName: string, callback?: Callback<UploadParams>)

المعلمات

blobName

string

الاسم الذي سيتم استخدامه للكائن الثنائي كبير الحجم الذي سيتم إنشاؤه مع محتوى الدفق.

callback

Callback<UploadParams>

رد اتصال اختياري للاتصال عند اكتمال التحميل.

notifyBlobUploadStatus(string, boolean, number, string)

function notifyBlobUploadStatus(correlationId: string, isSuccess: boolean, statusCode: number, statusDescription: string): Promise<void>

المعلمات

correlationId

string

isSuccess

boolean

statusCode

number

statusDescription

string

المرتجعات

Promise<void>

notifyBlobUploadStatus(string, boolean, number, string, ErrorCallback)

يرسل أسلوب notifyBlobUploadStatus IoT Hub نتيجة تحميل كائن ثنائي كبير الحجم.

function notifyBlobUploadStatus(correlationId: string, isSuccess: boolean, statusCode: number, statusDescription: string, callback?: ErrorCallback)

المعلمات

correlationId

string

معرف لربط حالة تحميل إلى كائن ثنائي كبير الحجم معين. تم إنشاؤه أثناء استدعاء getBlobSharedAccessSignature.

isSuccess

boolean

حالة النجاح أو الفشل من نتيجة عملية كائن ثنائي كبير الحجم للتخزين.

statusCode

number

رمز حالة HTTP المقترن بنتيجة كائن ثنائي كبير الحجم للتخزين.

statusDescription

string

وصف رمز حالة HTTP.

callback

ErrorCallback

رد اتصال اختياري للاتصال عند اكتمال التحميل.

onDeviceMethod(string, (request: DeviceMethodRequest, response: DeviceMethodResponse) => void)

تسجيل رد اتصال لأسلوب يسمى methodName.

function onDeviceMethod(methodName: string, callback: (request: DeviceMethodRequest, response: DeviceMethodResponse) => void)

المعلمات

methodName

string

اسم الأسلوب الذي سيتم التعامل معه بواسطة رد الاتصال

callback

(request: DeviceMethodRequest, response: DeviceMethodResponse) => void

الدالة التي يجب استدعاؤها كلما تم تلقي طلب أسلوب للأسلوب المسمى methodName.

setOptions(DeviceClientOptions)

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

المعلمات

المرتجعات

Promise<TransportConfigured>

setOptions(DeviceClientOptions, Callback<TransportConfigured>)

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

المعلمات

done

Callback<TransportConfigured>

uploadToBlob(string, Stream, number)

function uploadToBlob(blobName: string, stream: Stream, streamLength: number): Promise<void>

المعلمات

blobName

string

stream

Stream

streamLength

number

المرتجعات

Promise<void>

uploadToBlob(string, Stream, number, ErrorCallback)

يقوم أسلوب uploadToBlob بتحميل دفق إلى كائن ثنائي كبير الحجم.

function uploadToBlob(blobName: string, stream: Stream, streamLength: number, callback: ErrorCallback)

المعلمات

blobName

string

الاسم الذي سيتم استخدامه للكائن الثنائي كبير الحجم الذي سيتم إنشاؤه مع محتوى الدفق.

stream

Stream

يجب تحميل البيانات إلى ذلك إلى الكائن الثنائي كبير الحجم.

streamLength

number

يجب تحميل حجم البيانات إلى ذلك إلى الكائن الثنائي كبير الحجم.

callback

ErrorCallback

تفاصيل الأساليب المتوارثة

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 تغيير هذا لأنه قد ينتهك معيار الويب. بالإضافة إلى ذلك، تجعل واجهة برمجة التطبيقات الأصلية من السهل نسيان إزالة المستمعين.

تسمح واجهة برمجة التطبيقات هذه بأمان باستخدام AbortSignals في واجهات برمجة التطبيقات Node.js عن طريق حل هاتين المشكلتين عن طريق الاستماع إلى الحدث بحيث لا يمنع 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): Client

المعلمات

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) أو الإعدادات الافتراضية إلى 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)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

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.listeners

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

الاسم المستعار ل emitter.removeListener().

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من 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 التي يتم إرجاعها بواسطة كل تكرار عبارة عن صفيف يتكون من وسيطات الحدث المنبعثة.

يمكن استخدام 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>

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 بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

بشكل افتراضي، يتم استدعاء مستمعي الأحداث بالترتيب الذي تتم إضافتهم به. يمكن استخدام أسلوب emitter.prependListener() كبديل لإضافة مستمع الحدث إلى بداية صفيف المستمعين.

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

دالة رد الاتصال

المرتجعات

موروث من 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

يمكن استخدام 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): Client

المعلمات

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 بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

دالة رد الاتصال

المرتجعات

موروث من 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): Client

المعلمات

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

المعلمات

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

المعلمات

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)

بشكل افتراضي، ستقوم EventEmitters بطباعة تحذير إذا تمت إضافة أكثر من 10 وحدة استماع لحدث معين. هذا افتراضي مفيد يساعد في العثور على تسرب الذاكرة. يسمح الأسلوب emitter.setMaxListeners() بتعديل الحد لهذا المثيل EventEmitter المحدد. يمكن تعيين القيمة إلى Infinity (أو 0) للإشارة إلى عدد غير محدود من المستمعين.

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

function setMaxListeners(n: number): Client

المعلمات

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