ملخص سريع (TL;DR)
استخدم MQTT لأجهزة إنترنت الأشياء (IoT) ذات البطارية المحدودة، والشبكات غير الموثوقة، أو أنماط المراسلة من نوع النشر والاشتراك (pub-sub). استخدم HTTP لواجهات برمجة التطبيقات (APIs) القياسية للويب/الجوال. يستخدم MQTT رؤوسًا بحجم 2 بايت مقابل أكثر من 100 بايت في HTTP، مما يجعله مثاليًا للأجهزة ذات الموارد المحدودة. تطبيق Modern PetstoreAPI الحديث يطبق MQTT لأطواق تتبع الحيوانات الأليفة وأجهزة التغذية الذكية.
مقدمة
يحتاج طوق تتبع حيوانك الأليف إلى إرسال تحديثات الموقع كل 5 دقائق. يعمل ببطارية على شكل عملة معدنية من المفترض أن تدوم لمدة 6 أشهر. باستخدام HTTP، ستنفد البطارية في أسبوعين. باستخدام MQTT، ستدوم الستة أشهر كاملة.
HTTP هو المعيار لواجهات برمجة التطبيقات (APIs)، ولكنه مصمم لمتصفحات الويب، وليس لأجهزة إنترنت الأشياء (IoT). تم بناء MQTT (بروتوكول نقل القياس عن بعد عبر قائمة انتظار الرسائل) للأجهزة ذات الموارد المحدودة والنطاق الترددي المنخفض والشبكات غير الموثوقة.
يستخدم Modern PetstoreAPI بروتوكول HTTP لتطبيقات الويب والجوال، ولكن MQTT لأجهزة إنترنت الأشياء: أطواق تتبع الحيوانات الأليفة، وأجهزة التغذية الذكية، وأجهزة مراقبة الصحة.
في هذا الدليل، ستتعلم متى يتفوق MQTT على HTTP، وسترى أمثلة حقيقية من Modern PetstoreAPI، وتكتشف كيفية اختيار البروتوكول المناسب لحالة الاستخدام الخاصة بك.
ما هو MQTT؟
MQTT هو بروتوكول مراسلة خفيف الوزن من نوع النشر والاشتراك (pub-sub) مصمم لإنترنت الأشياء (IoT).
كيف يعمل MQTT
تنشر الأجهزة الرسائل إلى مواضيع (topics). تشترك الأجهزة الأخرى في هذه المواضيع:
Publisher (Pet Collar):
Topic: pets/019b4132/location
Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}
Subscriber (Mobile App):
Subscribe to: pets/019b4132/location
Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}
يتواجد وسيط MQTT (MQTT Broker) في المنتصف، ويوجه الرسائل من الناشرين إلى المشتركين.
الميزات الرئيسية لـ MQTT
1. رؤوس صغيرة جدًا - MQTT: 2 بايت، HTTP: 100-500 بايت
2. اتصالات مستمرة - يحافظ MQTT على الاتصالات مفتوحة
3. جودة الخدمة (QoS) - QoS 0/1/2 لضمانات التسليم
4. الوصية الأخيرة (Last Will) - رسالة تُرسل إذا تم قطع اتصال الجهاز بشكل غير متوقع
5. الرسائل المحتفظ بها (Retained messages) - يحتفظ الوسيط بالرسالة الأخيرة للمشتركين الجدد
مقارنة بين MQTT و HTTP
| الميزة | MQTT | HTTP |
|---|---|---|
| حجم الرأس | 2 بايت | 100-500 بايت |
| النمط | نشر-اشتراك (Pub-Sub) | طلب-استجابة (Request-Response) |
| الاتصال | مستمر | لكل طلب |
| النطاق الترددي | منخفض جداً | أعلى |
| تأثير البطارية | ضئيل | كبير |
| دعم المتصفح | عبر WebSocket | أصلي |
مثال على النطاق الترددي
1000 تحديث للموقع يوميًا:
- HTTP: 420 كيلوبايت يوميًا، 12.6 ميجابايت شهريًا
- MQTT: 52 كيلوبايت يوميًا، 1.56 ميجابايت شهريًا
يستخدم MQTT نطاقًا تردديًا أقل بـ 8 مرات.
متى يتفوق MQTT
1. أجهزة إنترنت الأشياء (IoT) ذات البطارية المحدودة
طوق تتبع الحيوانات الأليفة:
- MQTT: عمر البطارية 6 أشهر
- HTTP: عمر البطارية أسبوعان
السبب: اتصال مستمر، رؤوس صغيرة، وقت أقل لتشغيل الراديو.
2. الشبكات غير الموثوقة
أجهزة إنترنت الأشياء الخلوية ذات التغطية المتقطعة:
- QoS لضمان التسليم
- إعادة الاتصال التلقائي
- استمرارية الجلسة
3. الاتصال من كثير إلى كثير
سيناريو جهاز التغذية الذكي للحيوانات الأليفة:
Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → subscribes to pets/+/feeding (all pets)
App 2 → subscribes to pets/019b4132/feeding (one pet)
4. بيانات الاستشعار في الوقت الفعلي
جهاز مراقبة صحة الحيوانات الأليفة يرسل تحديثات كل ثانية:
- اتصال مستمر (بدون تكاليف إضافية)
- حد أدنى من زمن الاستجابة
- فعال للتحديثات عالية التردد
متى يتفوق HTTP
1. تطبيقات الويب/الجوال القياسية
HTTP عالمي:
- كل لغة لديها مكتبات HTTP
- المتصفحات تدعمه أصلاً
- الوكلاء والجدران النارية تسمح به
2. أنماط الطلب والاستجابة
الحصول على تفاصيل الحيوانات الأليفة:
GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}
HTTP أبسط للطلب والاستجابة.
3. متطلبات التخزين المؤقت (Caching)
يعمل التخزين المؤقت في HTTP بشكل مباشر:
- التخزين المؤقت للمتصفح
- التخزين المؤقت لشبكة توصيل المحتوى (CDN)
- التخزين المؤقت للوكيل (Proxy)
MQTT لا يحتوي على تخزين مؤقت.
4. واجهات برمجة تطبيقات RESTful
رموز حالة HTTP، الأساليب، والدلالات:
- 200 OK, 404 Not Found, 201 Created
- GET, POST, PUT, DELETE
- معالجة الأخطاء القياسية
كيف يستخدم Modern PetstoreAPI بروتوكول MQTT
يطبق Modern PetstoreAPI بروتوكول MQTT لأجهزة إنترنت الأشياء.
أطواق تتبع الحيوانات الأليفة
الطوق ينشر الموقع:
Topic: pets/019b4132/location
QoS: 1 (at least once)
Payload: {
"lat": 37.7749,
"lng": -122.4194,
"battery": 85,
"timestamp": "2026-03-13T10:30:00Z"
}
تطبيق الجوال يشترك:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');
client.subscribe('pets/019b4132/location');
client.on('message', (topic, message) => {
const location = JSON.parse(message);
updateMap(location.lat, location.lng);
});
أجهزة التغذية الذكية
جهاز التغذية يشترك في الجدول الزمني:
Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
"times": ["08:00", "18:00"],
"amount": 100
}
جهاز التغذية ينشر أحداث التغذية:
Topic: pets/019b4132/feeding-events
Payload: {
"timestamp": "2026-03-13T08:00:15Z",
"amount": 100,
"dispensed": true
}
أجهزة مراقبة الصحة
جهاز المراقبة ينشر البيانات الحيوية:
Topic: pets/019b4132/health
QoS: 0 (fire and forget, high frequency)
Payload: {
"heartRate": 120,
"temperature": 38.5,
"activity": "resting"
}
اختبار MQTT باستخدام Apidog
يدعم Apidog اختبار MQTT جنبًا إلى جنب مع HTTP والبروتوكولات الأخرى.
اختبار النشر والاشتراك (Pub-Sub) في MQTT
- الاتصال بوسيط MQTT
- الاشتراك في المواضيع
- نشر رسائل اختبار
- التحقق من تنسيق الرسالة
- اختبار مستويات جودة الخدمة (QoS)
محاكاة فشل الشبكة
- اختبار منطق إعادة الاتصال
- التحقق من تسليم QoS 1/2
- فحص رسائل الوصية الأخيرة (Last Will)
- التحقق من استمرارية الجلسة
المقارنة مع HTTP
اختبر نفس الوظائف باستخدام كلا البروتوكولين:
- قياس استخدام النطاق الترددي
- مقارنة زمن الاستجابة
- التحقق من اتساق البيانات
الخلاصة
يخدم MQTT و HTTP أغراضًا مختلفة. استخدم MQTT لأجهزة إنترنت الأشياء ذات الموارد المحدودة. استخدم HTTP لواجهات برمجة التطبيقات القياسية للويب/الجوال.
يوضح Modern PetstoreAPI كيفية استخدام كليهما: HTTP لواجهات برمجة التطبيقات الموجهة للمستخدمين، وMQTT لأجهزة إنترنت الأشياء. يعتمد البروتوكول الصحيح على قيودك، وليس على أيهما "أفضل".
اختبر كلا البروتوكولين باستخدام Apidog للعثور على الأنسب لحالة الاستخدام الخاصة بك.
الأسئلة الشائعة
هل يمكن أن يعمل MQTT عبر HTTP؟
يمكن لـ MQTT أن يعمل عبر WebSocket، والذي يعمل بدوره عبر HTTP. يساعد هذا في اختراق جدران الحماية ولكنه يفقد بعض فوائد كفاءة MQTT.
ما هي مستويات QoS في MQTT؟
- QoS 0: مرة واحدة على الأكثر (بدون تأكيد)
- QoS 1: مرة واحدة على الأقل (مع تأكيد، قد تتكرر)
- QoS 2: مرة واحدة بالضبط (مضمونة، بدون تكرار)
هل MQTT آمن؟
نعم، يدعم MQTT تشفير TLS (MQTTS) ومصادقة اسم المستخدم/كلمة المرور. يستخدم Modern PetstoreAPI بروتوكول MQTTS لجميع أجهزة إنترنت الأشياء.
هل يمكن للمتصفحات استخدام MQTT؟
يمكن للمتصفحات استخدام MQTT عبر WebSocket. تدعم مكتبات مثل MQTT.js بيئات المتصفحات.
كيف يقارن MQTT بـ WebSocket؟
MQTT هو بروتوكول يمكن أن يعمل عبر WebSocket. WebSocket هو طبقة نقل. يضيف MQTT ميزات النشر والاشتراك (pub-sub) و QoS وميزات خاصة بإنترنت الأشياء (IoT) فوق WebSocket.
