Web sockets

WebSockets2
قبل ظهور الـ web socket عندما تريد استخدام الويب، البرتكول الوحيد المستخدم لاستعراض صفحات الانترنت على المتصفح هو http، مبدأ عمل هذا البرتكول قائم على ان العميل Client يقوم بإرسال الطلب Request ثم السيرفر يقوم بالرد Response فقط، بمعنى ان السيرفر لا يستطيع ان يرسل طلب Request وال Client لا يستطيع ان يستقبل طلبات ويرد عليها،

مع تطور التقنيات هذا السيناريوا اصبح عقيم ولا يلبي المتطلبات، تخيل انك تتراسل مع صديقك عبر الشات وارسلت رسالة هذه الرسالة ذهبت الى السيرفر ويفترض بها بعد ذلك ان تذهب الى صديقك الي هو عبارة عن Client لكن السيرفر لا يستطيع ان يرسل هذه الرسالة الى الكلاينت.

فكانت تستخدم طرق مثل AJAX Polling او Long-Polling او Short-Polling لكن كل هذه الطرق كانت تعتمد على ان الكلاينت هو من يرسل الطلب والسيرفر يرد، فكانت مجرد ترقيعات بسيطة لا تلبي كثير من المتطلبات، فقاموا بتعديل هذا السيناريوا وأتاحوا للسيرفر والكلاينت بأن يقوما بعمل Request و Response ، وظهرت مفاهيم جديدة تنتهج هذا السيناريوا مثل Server Sent Events – SSE و الـ Websocket اتاحت هذه التقنيات للمطورين من بناء تطبيقات تعمل في الوقت الحقيقي Real-time ، تقنية SSE تتيح للسيرفر فقط بأن يرسل Request للكلاينت وتستخدم في التطبيقات البسيطة لارسال بيانات بسيطة، وكثير من المواقع اليوم تستخدم هذا الامر مثل الفيسبوك وتويتر، تلاحظ في الفيسبوك مثلا عندما يقوم شخص بالتعليق على منشور لك يصلك تنبيه في نفس اللحظة التي قام صديقك بالتعليق بدون ان تعمل تحديث للصفحة، هذا الامر يتم عبر SSE وكثير من المتصفحات تدعم هذه التقنية، لكن ماذا لو اردت عمل محادثة عبر الفيديو هنا طبعا البيانات ستكون كبيرة والمزامنة يجب ان تكون سريعة لهذا جاءت الـ Websocket ، هذه التقنية تختلف عن البقية هذه عبارة عن برتكول وجد لجعل السيرفر والكلاينت يقوموا بإرسال Request و Response في نفس الوقت بكفاءة عالية، وهو في الحقيقة عبارة عن وسيط مابين برتكول TCP وبرتكول http، يستخدم في التطبيقات التي بحاجة ان يكون هناك اتصال غير منقطع مابين السيرفر والعميل، مثل محادثات الفيديو والالعاب، وللاسف لاتزال هذه التقنية حديثة و غير مدعومة من كثير من المتصفحات.

بإمكانك طبعا استخدام هذه التقنيات مع PHP او اي لغة اخرى.

  • مقاله رائعه بش مهندس شكراً جزيلاً