~2 دقیقه مطالعه • بروزرسانی ۶ دی ۱۴۰۴
1. مقدمه
ماژول diagnostics_channel برای ایجاد کانالهای نامگذاریشده استفاده میشود. این کانالها میتوانند پیامهای تشخیصی را منتشر کرده و توسط مشترکین دریافت شوند.
2. API عمومی
diagnostics_channel.channel(name): ایجاد یا دریافت یک کانال.diagnostics_channel.hasSubscribers(name): بررسی وجود مشترک فعال.diagnostics_channel.subscribe(name, handler): ثبت handler برای دریافت پیامها.diagnostics_channel.unsubscribe(name, handler): حذف handler ثبتشده.
3. کلاس Channel
channel.hasSubscribers: بررسی مشترکین فعال.channel.publish(message): انتشار پیام به مشترکین.channel.subscribe(handler): ثبت handler برای کانال.channel.unsubscribe(handler): حذف handler.channel.bindStore(store, transform): اتصال دادهها بهAsyncLocalStorage.channel.runStores(context, fn): اجرای تابع در محدودهٔ context ذخیرهشده.
4. کلاس TracingChannel
TracingChannel مجموعهای از کانالها برای ردیابی یک عملیات قابلپیگیری است.
traceSync(fn, context): ردیابی اجرای همزمان.tracePromise(fn, context): ردیابی اجرای Promise.traceCallback(fn, position, context): ردیابی اجرای تابع callback.- کانالهای داخلی: start، end، asyncStart، asyncEnd، error.
5. کانالهای داخلی (Built-in Channels)
- Console: رویدادهای
console.log،console.errorو غیره. - HTTP: رویدادهای مربوط به درخواست و پاسخهای HTTP.
- HTTP/2: رویدادهای مربوط به streamهای HTTP/2.
- Modules: رویدادهای مربوط به
require()وimport(). - NET: رویدادهای مربوط به اتصالهای TCP و Pipe.
6. مثال ساده
const diagnostics_channel = require('node:diagnostics_channel');
const channel = diagnostics_channel.channel('my-channel');
channel.subscribe((message, name) => {
console.log('Received:', message);
});
if (channel.hasSubscribers) {
channel.publish({ some: 'data' });
}
نتیجهگیری
ماژول diagnostics_channel ابزاری قدرتمند برای مدیریت دادههای تشخیصی و ردیابی جریان اجرای برنامه در Node.js است. با استفاده از Channel و TracingChannel میتوان عملیات همزمان و غیرهمزمان را بهصورت دقیق ردیابی کرد و دادههای مرتبط را بهطور ساختاریافته منتشر نمود.
نوشته و پژوهش شده توسط دکتر شاهین صیامی