چابک به شما این امکان را می‌دهد که بتوانید ارتباط لحظه‌ای (Real-time) بین سرور و کلاینت داشته باشید و داده‌های مورد نظرتان را در لحظه جا به جا کنید. به عنوان مثال در اپلیکیشن‌های هوشمند حمل و نقل می‌توانید درخواست کاربر و تایید آن را به صورت آنی داشته باشید.

زیرساخت چابک از مدل رویدادگرا Pub/Sub استفاده می‌کند. مزیت این مدل علاوه بر آنی بودن این است که ارسال کننده نیازی به این که بداند چه کسانی دریافت می‌کنند، ندارد. برای درک بهتر آن توصیه می‌کنیم این لینک را مطالعه نمایید. از این طریق شما با عضویت روی یک رویداد، آن را پس از هر بار رخ دادن دریافت می‌نمایید. علاوه بر آن شما می‌توانید یک رویدادی را با داده دلخواه خود ارسال کنید.


رویداد

رویدادها می‌توانند هر گونه انتقال داده بین سرور و کلاینت باشند. برای مثال، فرض کنید شما در اپلیکیشن درخواست تاکسی می‌خواهید سفر خود را با دوستانتان به اشتراک بگذارید. برای این منظور می‌توانید موقعیت مکانی و وضعیت سفر خود را برای کسانی که روی آن رویداد عضویت دارند، ارسال کنید تا به صورت آنی‌ (Real-Time) از وضعیت سفر شما مطلع شوند. یا همچنین می‌توانید به جای درخواست‌های HTTP با استفاده از زیرساخت دو طرفه و آنی چابک رویدادهای درون‌برنامه‌ای بین بکند (Back-end) و چند دستگاه منتشر کنید.

عضویت بر روی یک رویداد

به منظور دریافت رویدادها شما ابتدا باید با استفاده از متد subscribeEvent بر روی رویداد عضو شوید:


chabok.subscribeEvent(eventName) // public event
chabok.subscribeEvent(eventName, installationId) // private event
chabok.subscribeEvent(eventName, installationId, live)

نکته : با فراهم آوردن مقدار installationId شما تنها رویدادهایی که از آن دستگاه ارسال می‌شود را دریافت خواهید کرد. توجه داشته باشید که این مقدار را می‌توانید با استفاده از متد getInstallationId دریافت نمایید.

غیر فعال کردن یک رویداد

برای غیرفعال کردن یک رویداد کافی است متد unSubscribeEvent را که با دو امضای مختلف وجود دارد را بر اساس نیاز خود فراخوانی نمایید:


chabok.unSubscribeEvent(eventName) // public event
chabok.unSubscribeEvent(eventName, installationId) // private event

دریافت رویداد

با پیاده‌سازی متد onEvent و معرفی کلاس آن به متد addListener قادر به دریافت رویدادها خواهید بود:

function onEvent(message) {
  console.log(message)
}
chabok.on('eventName',  onEvent)

نکته: توجه داشته باشید زمانی متد onEvent فراخوانی خواهد شد که کاربر روی نام رویدادهای منتشر شده، عضویت داشته باشد. برای این منظور بخش عضویت روی رویداد را مطالعه کنید.


انتشار رویداد

با استفاده از متد publishEvent می‌توانید رویدادهای دلخواه خود را با یک نام و یک داده (Data) منتشر کنید، متد زیر به صورت خودکار در صورت قطعی ارتباط اقدام به ارسال مجدد می‌کند و به صورت آنی داده‌های شما را منتشر خواهد کرد:

chabok.publishEvent('eventName', {data: 'JSONObject'})

برای نمونه در زیر کد انتشار موقعیت مکانی در اشتراک سفر کاربر قرار داده شده است که پس از دریافت موقعیت مکانی کاربر، آن را با رویدادی تحت عنوان shareTrip منتشر می‌کند:

const data = {
  lat: 35.7583719,
  lng: 51.4082228,
  tripId: 12345678
}
chabok.publishEvent('shareTrip', data)