مشاركة عبر


Client class

يتم استخدام عميل خدمة IoT Hub للاتصال بالأجهزة من خلال مركز Azure IoT. يتيح لمستخدم SDK:

  • إرسال السحابة إلى الجهاز (المعروفة أيضا بالأوامر) إلى الأجهزة: يتم وضع الأوامر في قائمة الانتظار على IoT Hub ويتم تسليمها بشكل غير متزامن فقط عند توصيل الجهاز. يمكن وضع 50 أمر فقط في قائمة الانتظار لكل جهاز.
  • استدعاء أساليب مباشرة على الأجهزة (والتي ستعمل فقط إذا كان الجهاز متصلا حاليا: إنها طريقة متزامنة للتواصل مع الجهاز)
  • استمع إلى رسائل الملاحظات المرسلة بواسطة الأجهزة للأوامر السابقة.
  • استمع إلى إعلامات تحميل الملفات من الأجهزة.

يجب على المستخدمين إنشاء مثيلات Client جديدة عن طريق استدعاء أحد أساليب المصنع، منConnectionString أو منSharedAccessSignature، لإنشاء عميل خدمة IoT Hub.

يمتد

EventEmitter

الأساليب

close()
close(IncomingMessageCallback<Disconnected>)

إغلاق الاتصال بمركز IoT.

fromConnectionString(string, TransportCtor)

إنشاء عميل خدمة IoT Hub من سلسلة الاتصال المحددة باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

fromSharedAccessSignature(string, TransportCtor)

إنشاء عميل خدمة IoT Hub من توقيع الوصول المشترك المحدد باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

fromTokenCredential(string, TokenCredential, TransportCtor)

إنشاء عميل خدمة IoT Hub من Azure tokenCredential المحدد باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

getFeedbackReceiver()
getFeedbackReceiver(IncomingMessageCallback<ServiceReceiver>)

إرجاع كائن AmqpReceiver الذي يصدر الأحداث عند تلقي العميل رسائل ملاحظات جديدة.

getFileNotificationReceiver()
getFileNotificationReceiver(IncomingMessageCallback<ServiceReceiver>)

إرجاع كائن AmqpReceiver الذي يصدر الأحداث عند تلقي العميل إعلامات تحميل ملف جديدة.

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

استدعاء أسلوب على جهاز أو وحدة نمطية معينة.

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

فتح الاتصال بمركز IoT.

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

إرسال رسالة إلى جهاز.

setRetryPolicy(RetryPolicy)

تعيين النهج المستخدم من قبل العميل لإعادة محاولة عمليات الشبكة.

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

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

الاسم المستعار ل emitter.on(eventName, listener).

emit<E>(string | symbol, any[])

يستدعي بشكل متزامن كل من المستمعين المسجلين للحدث المسمى 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()

إرجاع صفيف يسرد الأحداث التي قام المرسل بتسجيل المستمعين لها.

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

إرجاع قيمة وحدة الإصغاء القصوى الحالية EventEmitter التي تم تعيينها إما بواسطة emitter.setMaxListeners(n) أو الإعدادات الافتراضية إلى events.defaultMaxListeners.

listenerCount<E>(string | symbol, (args: any[]) => void)

إرجاع عدد المستمعين المستمعين للحدث المسمى eventName. إذا تم توفير listener، فسيرجع عدد المرات التي يتم فيها العثور على وحدة الاستماع في قائمة وحدات الاستماع للحدث.

listeners<E>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName.

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

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

on<E>(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<E>(string | symbol, (args: any[]) => void)

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

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

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

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

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

إضافة الدالة إلى بداية من صفيف المستمعين للحدث المسمى . لا يتم إجراء أي فحوصات لمعرفة ما إذا كان قد تمت إضافة listener بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

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

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

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

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

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

rawListeners<E>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName، بما في ذلك أي برامج تضمين (مثل تلك التي تم إنشاؤها بواسطة .once()).

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

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

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

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

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

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

إزالة كافة وحدات الاستماع، أو تلك الخاصة eventNameالمحددة.

من الممارسات السيئة إزالة المستمعين الذين تمت إضافتهم في مكان آخر في التعليمات البرمجية، خاصة عند إنشاء مثيل EventEmitter بواسطة مكون أو وحدة أخرى (مثل مآخذ التوصيل أو تدفقات الملفات).

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

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

يزيل listener المحدد من صفيف وحدة الاستماع للحدث المسمى eventName.

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

سيقوم removeListener()، على الأكثر، بإزالة مثيل واحد من وحدة الإصغاء من صفيف وحدة الاستماع. إذا تمت إضافة أي وحدة استماع واحدة عدة مرات إلى صفيف وحدة الاستماع eventNameالمحدد ، فيجب استدعاء removeListener() عدة مرات لإزالة كل مثيل.

بمجرد إصدار حدث، يتم استدعاء جميع المستمعين المرفقين به في وقت الانبعاث بالترتيب. وهذا يعني أن أي removeListener() نداءات removeAllListeners()بعد الإرسال وقبل أن ينهي آخر مستمع التنفيذ لن تزيلها من emit() القيد الجاري. تتصرف الأحداث اللاحقة كما هو متوقع.

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

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

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

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

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

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

نظرا لأن المستمعين يديرون باستخدام مصفوفة داخلية، فإن استدعاء هذه الشبكة سيغير مؤشرات موقع أي مستمع مسجل بعد إزالة المستمع. لن يؤثر هذا على الترتيب الذي يتم استدعاء المستمعين به، ولكنه يعني أن أي نسخ من صفيف وحدة الاستماع كما تم إرجاعها بواسطة أسلوب emitter.listeners() ستحتاج إلى إعادة إنشائها.

عند إضافة دالة واحدة كمعالج عدة مرات لحدث واحد (كما في المثال أدناه)، سيقوم removeListener() بإزالة المثيل الذي تمت إضافته مؤخرا. في المثال، تتم إزالة وحدة الاستماع once('ping'):

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

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

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

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

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

setMaxListeners(number)

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

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

[captureRejectionSymbol](Error, string | symbol, any[])

يتم استدعاء هذه Symbol.for('nodejs.rejection') الطريقة في حال حدوث رفض وعد عند إصدار حدث ويتم captureRejections تفعيله على الباعث. من الممكن استخدامه events.captureRejectionSymbol بدلا من Symbol.for('nodejs.rejection').

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

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}

تفاصيل الأسلوب

close()

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

المرتجعات

Promise<ResultWithIncomingMessage<Disconnected>>

close(IncomingMessageCallback<Disconnected>)

إغلاق الاتصال بمركز IoT.

function close(done?: IncomingMessageCallback<Disconnected>)

المعلمات

done

IncomingMessageCallback<Disconnected>

الدالة الاختيارية لاستدعاء عند اكتمال العملية. سيتم تمرير done وسيطة كائن خطأ، والتي ستكون فارغة إذا اكتملت العملية بنجاح.

fromConnectionString(string, TransportCtor)

إنشاء عميل خدمة IoT Hub من سلسلة الاتصال المحددة باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

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

المعلمات

connStr

string

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

transportCtor
TransportCtor

المرتجعات

fromSharedAccessSignature(string, TransportCtor)

إنشاء عميل خدمة IoT Hub من توقيع الوصول المشترك المحدد باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

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

المعلمات

sharedAccessSignature

string

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

transportCtor
TransportCtor

المرتجعات

fromTokenCredential(string, TokenCredential, TransportCtor)

إنشاء عميل خدمة IoT Hub من Azure tokenCredential المحدد باستخدام النقل الافتراضي (Amqp) أو الذي تم تحديده في الوسيطة الثانية.

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

المعلمات

hostName

string

اسم المضيف لخدمة Azure.

tokenCredential
TokenCredential

Azure TokenCredential يستخدم للمصادقة مع خدمة Azure

transportCtor
TransportCtor

المرتجعات

getFeedbackReceiver()

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

المرتجعات

Promise<ResultWithIncomingMessage<ServiceReceiver>>

getFeedbackReceiver(IncomingMessageCallback<ServiceReceiver>)

إرجاع كائن AmqpReceiver الذي يصدر الأحداث عند تلقي العميل رسائل ملاحظات جديدة.

function getFeedbackReceiver(done?: IncomingMessageCallback<ServiceReceiver>)

المعلمات

done

IncomingMessageCallback<ServiceReceiver>

الدالة الاختيارية لاستدعاء عند اكتمال العملية. سيتم استدعاء done باستخدام وسيطتين: كائن خطأ (يمكن أن يكون خاليا) وعنصر AmqpReceiver.

getFileNotificationReceiver()

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

المرتجعات

Promise<ResultWithIncomingMessage<ServiceReceiver>>

getFileNotificationReceiver(IncomingMessageCallback<ServiceReceiver>)

إرجاع كائن AmqpReceiver الذي يصدر الأحداث عند تلقي العميل إعلامات تحميل ملف جديدة.

function getFileNotificationReceiver(done?: IncomingMessageCallback<ServiceReceiver>)

المعلمات

done

IncomingMessageCallback<ServiceReceiver>

الدالة الاختيارية لاستدعاء عند اكتمال العملية. سيتم استدعاء done باستخدام وسيطتين: كائن خطأ (يمكن أن يكون خاليا) وعنصر AmqpReceiver.

invokeDeviceMethod(string, DeviceMethodParams)

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

المعلمات

deviceId

string

methodParams
DeviceMethodParams

المرتجعات

Promise<ResultWithIncomingMessage<any>>

invokeDeviceMethod(string, DeviceMethodParams, IncomingMessageCallback<any>)

استدعاء أسلوب على جهاز أو وحدة نمطية معينة.

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

المعلمات

deviceId

string

معرف هوية جهاز موجودة.

methodParams
DeviceMethodParams
done

IncomingMessageCallback<any>

رد الاتصال الاختياري للاتصال بنتيجة تنفيذ الأسلوب.

invokeDeviceMethod(string, string, DeviceMethodParams)

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

المعلمات

deviceId

string

moduleId

string

methodParams
DeviceMethodParams

المرتجعات

Promise<ResultWithIncomingMessage<any>>

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

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

المعلمات

deviceId

string

moduleId

string

methodParams
DeviceMethodParams
done

IncomingMessageCallback<any>

open()

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

المرتجعات

Promise<ResultWithIncomingMessage<Connected>>

open(IncomingMessageCallback<Connected>)

فتح الاتصال بمركز IoT.

function open(done?: IncomingMessageCallback<Connected>)

المعلمات

done

IncomingMessageCallback<Connected>

الدالة الاختيارية لاستدعاء عند اكتمال العملية. سيتم تمرير done وسيطة كائن خطأ، والتي ستكون فارغة إذا اكتملت العملية بنجاح.

send(string, Message | BufferConvertible)

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

المعلمات

deviceId

string

message

Message | BufferConvertible

المرتجعات

Promise<ResultWithIncomingMessage<MessageEnqueued>>

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

إرسال رسالة إلى جهاز.

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

المعلمات

deviceId

string

معرف هوية جهاز موجودة.

message

Message | BufferConvertible

نص الرسالة لإرسالها إلى الجهاز. إذا لم يكن message من النوع Message، تحويله.

done

IncomingMessageCallback<MessageEnqueued>

الدالة الاختيارية لاستدعاء عند اكتمال العملية. سيتم استدعاء done باستخدام وسيطتين: كائن خطأ (يمكن أن يكون خاليا) وعنصر استجابة خاص بالنقل مفيد للتسجيل أو تصحيح الأخطاء.

setRetryPolicy(RetryPolicy)

تعيين النهج المستخدم من قبل العميل لإعادة محاولة عمليات الشبكة.

function setRetryPolicy(policy: RetryPolicy)

المعلمات

policy

RetryPolicy

النهج المستخدم لإعادة محاولة العمليات (على سبيل المثال، فتح وإرسال وما إلى ذلك). تأتي SDK مع نهجين "مضمنين": ExponentialBackoffWithJitter (افتراضي) و NoRetry (لإلغاء أي شكل من أشكال إعادة المحاولة). يمكن للمستخدم أيضا تمرير الكائن الخاص به طالما أنه ينفذ طريقتين: - shouldRetry(err: Error): منطقي: يشير إلى ما إذا كان يجب إعادة محاولة العملية استنادا إلى نوع الخطأ - nextRetryTimeout(retryCount: number, مقيد: منطقي: رقم : إرجاع الوقت للانتظار (بالمللي ثانية) قبل إعادة المحاولة استنادا إلى العدد السابق من المحاولات (إعادة المحاولةCount) وحقيقة أن الخطأ هو خطأ تقييد أم لا.

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

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

الاسم المستعار ل emitter.on(eventName, listener).

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.addListener

emit<E>(string | symbol, any[])

يستدعي بشكل متزامن كل من المستمعين المسجلين للحدث المسمى 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<E>(eventName: string | symbol, args: any[]): boolean

المعلمات

eventName

string | symbol

args

any[]

المرتجعات

boolean

موروث من EventEmitter.emit

eventNames()

إرجاع صفيف يسرد الأحداث التي قام المرسل بتسجيل المستمعين لها.

import { EventEmitter } from 'node:events';

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

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

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

المرتجعات

(string | symbol)[]

موروث من EventEmitter.eventNames

getMaxListeners()

إرجاع قيمة وحدة الإصغاء القصوى الحالية EventEmitter التي تم تعيينها إما بواسطة emitter.setMaxListeners(n) أو الإعدادات الافتراضية إلى events.defaultMaxListeners.

function getMaxListeners(): number

المرتجعات

number

الموروثة من EventEmitter.getMaxListeners

listenerCount<E>(string | symbol, (args: any[]) => void)

إرجاع عدد المستمعين المستمعين للحدث المسمى eventName. إذا تم توفير listener، فسيرجع عدد المرات التي يتم فيها العثور على وحدة الاستماع في قائمة وحدات الاستماع للحدث.

function listenerCount<E>(eventName: string | symbol, listener?: (args: any[]) => void): number

المعلمات

eventName

string | symbol

اسم الحدث الذي يتم الاستماع إليه

listener

(args: any[]) => void

دالة معالج الأحداث

المرتجعات

number

موروث من EventEmitter.listenerCount

listeners<E>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName.

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

المعلمات

eventName

string | symbol

المرتجعات

(args: any[]) => void[]

موروثة من EventEmitter.listeners

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

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

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.off

on<E>(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<E>(eventName: string | symbol, listener: (args: any[]) => void): Client

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.on

once<E>(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<E>(eventName: string | symbol, listener: (args: any[]) => void): Client

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.once

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

إضافة الدالة إلى بداية من صفيف المستمعين للحدث المسمى . لا يتم إجراء أي فحوصات لمعرفة ما إذا كان قد تمت إضافة listener بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

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

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.prependListener

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

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

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

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

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.prependOnceListener

rawListeners<E>(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<E>(eventName: string | symbol): (args: any[]) => void[]

المعلمات

eventName

string | symbol

المرتجعات

(args: any[]) => void[]

موروث من EventEmitter.rawListeners

removeAllListeners<E>(string | symbol)

إزالة كافة وحدات الاستماع، أو تلك الخاصة eventNameالمحددة.

من الممارسات السيئة إزالة المستمعين الذين تمت إضافتهم في مكان آخر في التعليمات البرمجية، خاصة عند إنشاء مثيل EventEmitter بواسطة مكون أو وحدة أخرى (مثل مآخذ التوصيل أو تدفقات الملفات).

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

function removeAllListeners<E>(eventName?: string | symbol): Client

المعلمات

eventName

string | symbol

المرتجعات

موروث من EventEmitter.removeAllListeners

removeListener<E>(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<E>(eventName: string | symbol, listener: (args: any[]) => void): Client

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.removeListener

setMaxListeners(number)

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

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

function setMaxListeners(n: number): Client

المعلمات

n

number

المرتجعات

موروث من EventEmitter.setMaxListeners

[captureRejectionSymbol](Error, string | symbol, any[])

يتم استدعاء هذه Symbol.for('nodejs.rejection') الطريقة في حال حدوث رفض وعد عند إصدار حدث ويتم captureRejections تفعيله على الباعث. من الممكن استخدامه events.captureRejectionSymbol بدلا من Symbol.for('nodejs.rejection').

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

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}
function [captureRejectionSymbol](error: Error, event: string | symbol, args: any[])

المعلمات

error

Error

event

string | symbol

args

any[]

الموروث من EventEmitter.__@captureRejectionSymbol@90