Ably هي منصة مراسلة في الوقت الفعلي سحابية توفر بنية تحتية للاتصالات بنمط pub/sub، والحضور، ومزامنة الحالة. وهي مصممة للمشاريع المؤسسية ذات المتطلبات العالية للموثوقية والتوافر العالمي. وفقاً لـ الوثائق الرسمية لـ Ably (2025)، تضمن المنصة 99.999% من وقت التشغيل وزمن وصول أقل من 65 مللي ثانية في المئين 95.
الوجبات الرئيسية
Ably هي منصة سحابية في الوقت الفعلي تأسست عام 2014 وتوفر بنية تحتية للمراسلة الفورية. على عكس خدمات النشر البسيطة، تقدم Ably ضمانات تسليم على مستوى المؤسسات، وشبكة عالمية من نقاط الوجود (POP)، ومزامنة حالة مدمجة لملايين العملاء المتزامنين.
تُستخدم المنصة في المشاريع التي تكون فيها موثوقية التسليم حرجة: شاشات الأسعار المالية، متتبعات الخدمات اللوجستية، أنظمة المراقبة الطبية، والألعاب متعددة اللاعبين. تعتمد Ably على تقنية وسيط الرسائل الموزعة الخاصة بها، والتي تكرر البيانات عبر شبكة عالمية تضم أكثر من 15 مركز بيانات.
وفقاً لـ الموقع الرسمي لـ Ably (2025)، تعالج المنصة أكثر من 200 مليار رسالة شهرياً لأكثر من 50,000 تطبيق نشط. من بين العملاء شركات من قائمة Fortune 500: Toyota (تليماتيك السيارات)، HubSpot (مزامنة CRM)، Designity (التحرير التعاوني).
هندسة Ably مبنية على شبكة موزعة من وسطاء الرسائل (موجهات) متصلة عبر قنوات عالية السرعة. يخدم كل وسيط مجموعة فرعية من القنوات ويكرر الحالة باستخدام بروتوكول Ably — بروتوكول ثنائي عبر WebSocket محسّن لأقل حمل إضافي. يتصل العملاء بأقرب وسيط عبر موازنة تحميل DNS.
أحد الفروق الرئيسية لـ Ably عن المنافسين هو السجل العالمي المدمج، الذي يخزن سجل الرسائل لكل قناة. وهذا يسمح للمشتركين الجدد بتلقي ليس فقط الرسائل الجديدة ولكن أيضاً الرسائل السابقة (إعادة التشغيل)، وهو أمر بالغ الأهمية للتدقيق واستعادة الحالة بعد إعادة الاتصال.
نموذج التفاعل في Ably يتبع نمط الناشر-المشترك مع إمكانيات إضافية. يرسل الناشر رسالة إلى قناة عبر REST API أو SDK الخاص بـ Ably. تدخل الرسالة إلى السجل الموزع العالمي للقناة وتُوزع على جميع المشتركين عبر اتصالاتهم النشطة.
طبقة النقل — تدعم Ably بروتوكولات متعددة: WebSocket (الرئيسي، مع بروتوكول Ably الثنائي)، Server-Sent Events (لاستقبال أحادي الاتجاه)، HTTP streaming (للبيئات المقيدة)، و MQTT (لأجهزة إنترنت الأشياء). يختار العميل تلقائياً النقل المتاح بأقل زمن وصول.
تمر كل رسالة عبر التحقق من الصحة على جانب Ably — التحقق من توقيع مفتاح API، التحقق من حصة القناة، حقوق الوصول. يحدث التحقق في 1–5 مللي ثانية على موجه الحافة، وبعدها تُكرر الرسالة إلى السجل العالمي. وفقاً لـ مدونة Ably التقنية (2024)، يبلغ زمن الوصول من طرف إلى طرف أقل من 65 مللي ثانية لـ 95% من الرسائل أثناء النقل عبر القارات.
قنوات Ably هي مواضيع مسماة لتبادل الرسائل. يمكن أن يكون لكل قناة عدد غير محدود من المشتركين، ولكن لتحقيق أداء مستقر، يُوصى بعدم تجاوز 10,000 مشترك لكل قناة داخل منطقة واحدة. يمكن أن تكون القنوات أحادية الاتجاه (نشر من الخادم فقط) أو كاملة الازدواجية (ينشر العملاء الرسائل).
نموذج Pub/Sub في Ably يوسع النمط الكلاسيكي بإمكانيات إضافية: حضور المشتركين، سجل الرسائل، حالة القناة، ومساحات الأسماء. تنتمي كل قناة إلى مساحة اسم تحدد الحصص وحقوق الوصول.
الحضور — تتبع تلقائي لمشاركي القناة. يسجل كل عميل مشترك في القناة في خريطة الحضور مع clientId وحالة (متصل، غير متصل، غير نشط) وبيانات عشوائية. عند فصل العميل (بسبب انتهاء المهلة أو بشكل صريح)، يتم تحديث الحضور تلقائياً.
سجل الرسائل — تخزن كل قناة سجل الرسائل بشكل افتراضي (حتى دقيقتين أو 100 رسالة في الخطة المجانية). في الخطط المدفوعة، يمكن تمديد السجل حتى 72 ساعة مع إمكانية الوصول الاستعادي العشوائي. يُخزن السجل في سجل موزع مع ضمانات عدم القابلية للتغيير (إلحاق فقط).
| الميزة | الخطة المجانية | خطة المؤسسات |
|---|---|---|
| الاتصالات المتزامنة | 100 | 10,000+ |
| الاحتفاظ بالسجل | دقيقتان / 100 رسالة | 72 ساعة |
| ضمان التسليم | At-least-once | Exactly-once |
| المناطق | منطقة واحدة | جميع المناطق الـ 15+ |
| SLA | 99.9% | 99.999% |
ضمانات التسليم هي أحد الفروق الرئيسية لـ Ably عن معظم خدمات الوقت الفعلي. تدعم المنصة عدة أوضاع تسليم، يمكن اختيارها عند نشر الرسالة. يحدد الوضع عدد مرات تسليم الرسالة وكيفية معالجة فشل الاتصال.
At-least-once — تُسلم الرسالة مرة واحدة على الأقل، مع احتمالية وجود نسخ مكررة. يُستخدم هذا الوضع للإشعارات والبيانات غير الحرجة حيث لا تسبب النسخ المكررة ضرراً. Exactly-once — تُسلم الرسالة مرة واحدة بالضبط من خلال إلغاء التكرار على جانب العميل والخادم. هذا الوضع إلزامي للمعاملات المالية وإدارة الأجهزة.
Last-value cache — وضع خاص حيث تخزن القناة آخر قيمة لكل رسالة مسماة. يحصل المشترك الجديد فوراً على الحالة الحالية دون انتظار الحدث التالي. يتم تنفيذ ذلك من خلال مخزن قيم-مفاتيح عالمي على كل موجه. وفقاً لـ وثائق Ably (2025)، يقلل last-value cache وقت استعادة الحالة بعد إعادة الاتصال من 2–5 ثوانٍ إلى 50–100 مللي ثانية.
البدء مع Ably يتطلب التسجيل وإنشاء تطبيق والحصول على مفتاح API. المكتبات متاحة لجميع المنصات الرئيسية. دعنا نلقي نظرة على مثال للنشر والاشتراك باستخدام JavaScript SDK. يتصل العميل بمفتاح API، ويشترك في قناة، ويُرفق معالج الأحداث.
وفقاً لـ وثائق Ably (2025)، يُوصى باستخدام مفاتيح API مختلفة للخادم والعميل بأقل الصلاحيات (مبدأ الامتياز الأدنى). يمكن لمفتاح الخادم النشر في أي قناة، بينما يمكن لمفتاح العميل الاشتراك فقط في مساحات أسماء محددة.
import * as Ably from 'ably';
const client = new Ably.Realtime({
key: 'YOUR_API_KEY',
clientId: 'user-123'
});
const channel = client.channels.get('test-channel');
channel.subscribe('update', (message) => {
console.log('Received:', message.data);
});
channel.publish('update', {
text: 'Hello from Ably',
priority: 1
});
const Ably = require('ably');
const rest = new Ably.Rest({ key: 'SERVER_API_KEY' });
const channel = rest.channels.get('test-channel');
channel.publish('server-event', {
type: 'notification',
payload: { userId: 100, text: 'Server message' }
}).then(() => {
console.log('Message published via REST');
});
الاختيار بين Ably وPusher يعتمد على متطلبات المشروع. توفر كلتا المنصتين بنية تحتية للوقت الفعلي مستضافة، لكنهما تختلفان في الهندسة والضمانات والتسعير. Ably موجهة للمؤسسات ذات المتطلبات العالية للموثوقية، بينما Pusher موجهة للبدء السريع والبساطة.
تستخدم Ably سجلاً موزعاً عالمياً لكل قناة، مما يضمن تسليم exactly-once والوصول الاستعادي للسجل. تستخدم Pusher بنية وسيط مع ضمانات at-least-once. بالنسبة لمعظم التطبيقات، الفرق غير ملحوظ، ولكن للأنظمة المالية والطبية، يعتبر exactly-once أمراً بالغ الأهمية.
وفقاً لـ اختبار مقارن لـ Ably مقابل Pusher (2024)، تُظهر Ably زمن وصول أقل بنسبة 20–30% للنقل عبر القارات بسبب العدد الأكبر من مراكز البيانات. تتفوق Pusher في سرعة التكامل — حيث يستغرق الإعداد الأساسي من 10 إلى 15 دقيقة مقابل 20 إلى 30 دقيقة لـ Ably بسبب المزيد من خيارات التكوين.
SDK Ably للمنصات المحمولة يدعم iOS (Swift) و Android (Kotlin/Java) و Flutter و React Native. العملاء المحمولون متوافقون تماماً مع جانب الخادم لـ Ably ويدعمون جميع الوظائف: pub/sub والحضور والسجل وإشعارات الدفع. لنظام Android، يتوفر التكامل مع Firebase Cloud Messaging لتسليم إشعارات الدفع دون اتصال.
التحسين للشبكات المحمولة — يستخدم SDK Ably نبضات قلب تكيفية: على Wi-Fi، الفاصل الزمني 15 ثانية، على الشبكات المحمولة — حتى 60 ثانية لتوفير حركة المرور. عند فقدان الاتصال، يتحول SDK إلى نقل احتياطي (HTTP streaming) دون تأخير مرئي للمستخدم. متوسط استهلاك حركة المرور هو 0.5–1 كيلوبايت في الدقيقة في وضع الاستعداد.
إشعارات الدفع — تدعم Ably إرسال الدفع عبر APNs (Apple) و FCM (Firebase). يمكن توجيه الدفع إلى قناة محددة أو clientId. إذا كان العميل نشطاً (WebSocket متصل)، يتم تسليم الرسالة عبر القناة. إذا كان العميل غير متصل، يتم تسليم الرسالة كإشعار دفع. وهذا يضمن ألا يفوت المستخدم أبداً رسالة مهمة.
الأسئلة الشائعة
Ably تقدم تسليم exactly-once وسجلاً موزعاً عالمياً و 99.999% SLA. Pusher أبسط في الإعداد لكنه يوفر فقط ضمانات at-least-once. غالباً ما تختار Ably المشاريع المؤسسية ذات المتطلبات العالية للموثوقية.
تتضمن الخطة المجانية 100 اتصال متزامن و 500,000 رسالة شهرياً. تبدأ الخطط المدفوعة من 19 دولاراً شهرياً (1000 اتصال). يتم مناقشة تسعير المؤسسات مع ضمانات مخصصة بشكل فردي.
نعم، exactly-once هي إحدى الميزات الرئيسية لـ Ably. يتم إلغاء التكرار على جانب المنصة باستخدام معرفات رسائل فريدة (message ID + connection ID).
حالياً، تمتلك Ably أكثر من 15 نقطة وجود في جميع أنحاء العالم، بما في ذلك الولايات المتحدة وأوروبا وآسيا وأستراليا وأمريكا الجنوبية. يمكن لعملاء المؤسسات اختيار مناطق محددة لتخزين البيانات.
نعم، تدعم Ably بروتوكول MQTT لأجهزة إنترنت الأشياء منخفضة استهلاك الطاقة. تتوفر SDKs خفيفة الوزن مع استخدام ضئيل للذاكرة للأجهزة التي تعمل بـ ESP32 و Arduino و Raspberry Pi.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.