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

🌐 شرح أساسيات الشبكات

WebSocket والتواصل اللحظي

الدرس 25 من 27· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢١ يوليو ٢٠٢٦

مشكلة HTTP التقليدي

HTTP قائم على طلب/ردّ: العميل يطلب، الخادم يردّ، وينتهي الاتصال. لتطبيق يحتاج تحديثات لحظية (دردشة، إشعارات، أسعار أسهم)، الحل التقليدي هو الاستقصاء المتكرّر (Polling) — يسأل المتصفّح الخادم كل ثوانٍ "هل يوجد جديد؟"، وهذا مضيعة لموارد الشبكة والخادم لو لم يوجد جديد فعلًا.

ما هو WebSocket؟

بروتوكول يفتح اتصالًا واحدًا دائمًا وثنائي الاتجاه بين المتصفّح والخادم — كلاهما يرسل رسائل في أي وقت دون طلب/ردّ متكرّر، وبتكلفة أقلّ بكثير من فتح طلب HTTP جديد لكل رسالة.

const socket = new WebSocket("wss://example.com/chat");

socket.onopen = () => socket.send("مرحبًا من العميل");
socket.onmessage = (event) => console.log("وصل:", event.data);
socket.onclose = () => console.log("انقطع الاتصال");

المصافحة (Handshake): يبدأ كطلب HTTP عادي

WebSocket لا يبدأ من الصفر — يبدأ بطلب GET عادي يطلب من الخادم "ترقية" الاتصال:

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

لو وافق الخادم، يردّ بحالة 101 Switching Protocols ويحسب قيمة Sec-WebSocket-Accept من Sec-WebSocket-Key (بخوارزمية ثابتة)، ليؤكّد للعميل أنه فهم الطلب فعلًا وليس خادمًا عاديًّا لا يدعم WebSocket. بعدها يتحوّل نفس الاتصال إلى قناة WebSocket مفتوحة — لا يُفتح اتصال جديد.

ws مقابل wss

مثل HTTP و HTTPS تمامًا:

ws://wss://
التشفيرلانعم (فوق TLS)
الاستخدامتجارب محلّية فقطالإنتاج دائمًا

متى تستخدم WebSocket؟

الحالةالأنسب
تحديثات لحظية متكرّرة (دردشة، ألعاب، أسعار)WebSocket
بيانات تتغيّر نادرًا (كل دقائق)Polling عادي كافٍ
بيانات تتدفّق من الخادم فقط باتجاه واحدبدائل أبسط مثل Server-Sent Events
طلب واحد عادي (تسجيل دخول، جلب صفحة)HTTP التقليدي

💡 لا تفتح اتصال WebSocket إلا عند الحاجة الفعلية — يبقى مفتوحًا ويستهلك موردًا على الخادم طوال حياة الصفحة، فأغلقه (socket.close()) عند مغادرة المستخدم للصفحة أو انتهاء حاجته.

🎯 التالي: أفضل ممارسات الشبكات.

شرح WebSocket والتواصل اللحظي — أساسيات الشبكات بالعربي
WebSocket والتواصل اللحظيأساسيات الشبكات بالعربي · The Code Fix

📚 لمزيد من التعمّق في أساسيات الشبكات، راجِع توثيق HTTP والشبكات على MDN.

هل كان هذا الدرس مفيدًا؟