تخطَّ إلى المحتوى

٣ أغسطس ٢٠٢٦

WebSocket vs WebTransport: شو الفرق وامتى تختار الجديد؟

شارك المقال:

كل مطور اشتغل بتطبيق لحظي (دردشة، إشعارات، لعبة بالمتصفح) بيعرف WebSocket. بس بالفترة الأخيرة صار في اسم جديد يظهر بجانبه: WebTransport. هاد شرح عملي: شو الفرق الفعلي، ومتى فعلاً تحتاج الجديد.

WebSocket: قناة وحيدة، موثوقة، فوق TCP

WebSocket بيبدأ كطلب HTTP عادي، وبعد "ترقية" الاتصال (101 Switching Protocols) بيتحول لقناة واحدة ثنائية الاتجاه ومفتوحة طول الوقت فوق نفس اتصال TCP. كل رسالة بتوصل، وبالترتيب الصحيح، وإلا الاتصال بيوقف وينتظر — لأن TCP نفسه بروتوكول تسلسلي بطبيعته.

هاد الضمان مثالي لدردشة أو إشعارات، بس مبالغة بأحيان تانية: تطبيق لعبة بيبعث موضع اللاعب عشرات المرات بالثانية ما بيحتاج رسالة قديمة ضايعة تنعاد — بيحتاج فقط أحدث موضع، بأسرع وقت.

WebTransport: عدة طرق نقل على اتصال واحد فوق HTTP/3

WebTransport واجهة جديدة مبنية فوق HTTP/3 (ومن ورائه QUIC، البروتوكول المبني فوق UDP يلي حل مشكلة Head-of-Line Blocking بـ HTTP/3). بدل قناة وحيدة، بيعطيك:

  • Datagrams غير موثوقة: رسائل صغيرة ممكن تضيع أو توصل بترتيب مختلف، بلا إعادة إرسال تلقائية.
  • تدفقات ثنائية الاتجاه (Bidirectional Streams): موثوقة ومرتبة، وفيك تفتح أكتر من تدفق مستقل بنفس الاتصال.
  • تدفقات باتجاه واحد (Unidirectional Streams): موثوقة، لكن باتجاه واحد فقط.

لأن الاتصال مبني فوق QUIC، فقدان حزمة بتدفق وحدة ما بيوقف باقي التدفقات ولا قناة الـ datagrams — امتداد مباشر لنفس ميزة QUIC يلي خلّت HTTP/3 أسرع من HTTP/2 بالشبكات المتقلبة.

WebSocket     →  قناة واحدة موثوقة، فوق TCP
WebTransport  →  streams موثوقة + datagrams غير موثوقة، فوق QUIC (HTTP/3)

جدول المقارنة

المعيارWebSocketWebTransport
بروتوكول النقلTCPQUIC (فوق HTTP/3)
نوع القناةقناة واحدة موثوقةstreams موثوقة + datagrams غير موثوقة، بالتوازي
فقدان حزمةيوقف القناة كاملةيأثر بتدفق واحد فقط، والـ datagrams أصلًا مصممة لتحمّل الفقد
دعم المتصفحاتشامل تقريبًا بكل المتصفحاتوصل للمتصفحات الأربعة الكبار (Chrome، Edge، Firefox، Safari) لكن أضيق من WebSocket
بداية الاتصالترقية طلب HTTP (ws:// أو wss://)اتصال مباشر عبر HTTP/3 (https://)

امتى تختار كل واحد؟

  • دردشة، إشعارات، أوامر تحكّم لازم توصل كلها بالترتيب: WebSocket، أو تدفق موثوق بـ WebTransport لو عندك حاجة إضافية لـ datagrams بنفس الاتصال.
  • بث حي منخفض التأخير، مواضع لاعبين بلعبة، بيانات حساسات لحظية: WebTransport مع datagrams — الأحدث أهم من ضمان وصول كل رسالة قديمة.
  • مشروع موجود شغّال بـ WebSocket بلا مشاكل: ما في داعي تبديله فقط لأن الاسم الجديد صار موجود.

الخلاصة

WebTransport ما بيلغي WebSocket — الاثنين موجودين لحاجات مختلفة. WebSocket لسا الأنسب لما تحتاج ضمان وصول كل رسالة بالترتيب ودعم متصفحات أوسع، وWebTransport بيصير مفيد فعليًا لما يكون بمشروعك سيناريو لحظي بيستفيد من نقل بيانات غير موثوقة أو تعدد تدفقات على اتصال واحد فوق HTTP/3.

تعلّم أساسيات الشبكات كاملة بالعربي — من نموذج OSI لـ HTTP/2 وHTTP/3 وWebSocket وWebTransport.

📚 مصادر رسمية للتعمّق: freeCodeCamp — مصدر تعلّم البرمجة

الأسئلة الشائعة

هل WebTransport بيلغي WebSocket؟

لأ. WebSocket لسا الخيار الأنسب لما تحتاج ضمان وصول كل رسالة بالترتيب (دردشة، إشعارات)، ودعمه بالمتصفحات أوسع بكتير من WebTransport. WebTransport بيجي إضافة لحالات محددة، مش بديل شامل.

شو يعني datagrams غير موثوقة، وليش أحتاجها؟

يعني رسالة صغيرة ممكن توصل، أو تضيع، أو توصل بترتيب مختلف عن اللي انبعتت فيه — بلا إعادة إرسال تلقائية من الطبقة نفسها. مفيدة لبيانات بتتغيّر بسرعة وين القديم منها ما بيهمك أصلًا لو ضاع (موضع لاعب بلعبة، قراءة حساس لحظية)، لأن انتظار إعادة إرسال رسالة قديمة أبطأ من مجرد تجاهلها والانتظار للرسالة الجديدة.

هل لازم أغيّر كود موقعي الحالي المعتمد على WebSocket؟

لأ، مش ضروري. لو WebSocket شغّال ومناسب لحالتك، لا داعي للتبديل. WebTransport يصير مفيد فعليًا لو عندك سيناريو لحظي محدد (بث، ألعاب، بيانات حساسات) بيستفيد من الـ datagrams غير الموثوقة أو من تعدد التدفقات المستقلة على اتصال واحد.

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.