عن المؤسس4 أكتوبر 20264 دقائق قراءة

عبدالله عبدالرحيم سنكر: متى تحتاج WebSockets فعلاً للتحديثات اللحظية؟

قبل ما تبني اتصالاً مفتوحاً، عبدالله عبدالرحيم سنكر يعطيك إطار قرار للتحديثات اللحظية: الاستطلاع الدوري و SSE و WebSockets والإشعارات، ومتى يكون كل واحد هو الخيار الأنسب.

عبدالله عبدالرحيم سنكر — التحديثات اللحظية في التطبيقات
AZHAL

التحديثات اللحظية في التطبيقات

عبدالله عبدالرحيم سنكر

«نبي كل شي لحظي». جملة تسمعها في أول اجتماع لأغلب المشاريع: الطلبات لحظية، ولوحة التحكم لحظية، والإشعارات لحظية. وبعدها يقترح أحد WebSockets، وتنضاف للمشروع طبقة كاملة من التعقيد قد ما يحتاجها أبداً. عبدالله عبدالرحيم سنكر يبني تطبيقات بـ Flutter ومواقع بـ Next.js، وقبل ما يوافق على أي «لحظي» يمر على إطار قرار بسيط. هذا هو، بالترتيب اللي يستخدمه.

«لحظي» كلمة مطاطة: حوّلها لرقم

أول سؤال: كم ثانية تأخير يتحملها المستخدم قبل ما يتضرر؟ في محادثة بين شخصين، ثانيتين تأخير تحسّها. في تتبّع حالة طلب توصيل، عشر ثوانٍ ما يلاحظها أحد. في لوحة مبيعات يفتحها المدير مرتين في اليوم، تحديث كل خمس دقائق أكثر من كافي. لما يقول العميل «لحظي»، اطلب منه رقماً. الرقم وحده يشطب نص الخيارات، لأن الفرق بين «خلال ثانية» و«خلال دقيقة» هو الفرق بين بنية تحتية خاصة وسطر كود واحد.

السلّم: خمس درجات من الأبسط للأعقد

  • التحديث عند الفتح أو بالسحب: التطبيق يجيب أحدث بيانات لما تفتح الشاشة أو يسحب المستخدم للأسفل. بدون أي بنية إضافية، ويكفي أغلب الشاشات أكثر مما تتوقع.
  • الاستطلاع الدوري Polling: التطبيق يسأل الخادم كل عدد ثوانٍ «فيه جديد؟». بسيط، ويشتغل خلف أي خادم وأي جدار حماية، وعيبه طلبات كثيرة أغلبها جوابها «لا».
  • أحداث من الخادم SSE: اتصال HTTP يبقى مفتوحاً والخادم يرسل منه أحداثاً للمتصفح في اتجاه واحد. واجهة EventSource في المتصفح تعيد الاتصال تلقائياً لو انقطع. مناسب جداً لما يكون الخادم هو اللي يتكلم والعميل يسمع.
  • WebSockets: قناة مفتوحة في الاتجاهين، الطرفين يرسلون متى ما بغوا بتأخير منخفض. هذا اللي تحتاجه لما يكون العميل يرسل كثير كمان، مثل المحادثات والتحرير المشترك والألعاب.
  • الإشعارات الفورية Push: عبر خدمات آبل وجوجل، وهي الوحيدة اللي توصل والتطبيق مقفول. ما تصلح لنقل بيانات كثيرة، لكنها تقول للمستخدم «فيه شي يستاهل تفتح التطبيق».

والملاحظة اللي يغفل عنها كثير: الدرجة الخامسة مو بديل عن الباقي، هي مكمّلة. تطبيق التوصيل الجيد يرسل إشعاراً لما يطلع الطلب، وإذا فتح المستخدم شاشة التتبّع يبدأ تحديثاً أسرع، وإذا قفلها يوقف كل شي.

أربعة أسئلة تحسم القرار

  • مين يرسل؟ إذا الخادم بس، فـ SSE أو الاستطلاع غالباً يكفون. إذا الطرفين باستمرار، فـ WebSockets.
  • هل الشاشة مفتوحة وقت الحدث؟ إذا لا، فأنت تحتاج إشعاراً، وما فيه اتصال مفتوح يحل لك هذا.
  • كم مستخدم متصل في نفس الوقت؟ مئة متصل شي، وعشرين ألف شي ثاني تماماً من ناحية الخادم والتكلفة.
  • وش يصير لو فاتت رسالة؟ إذا كل رسالة مهمة، مثل محادثة، فأنت تحتاج آلية تعويض لما يرجع الاتصال، مو بس قناة سريعة.

واحسب الاستطلاع قبل ما تستبعده أو تعتمده. ألف مستخدم فاتحين الشاشة ويسألون كل خمس ثوانٍ يعني مئتين طلب في الثانية على خادمك، أغلبها يرجع فاضي. هذا مقبول لو الطلب خفيف ومخزّن مؤقتاً، ومزعج لو كل طلب يضرب قاعدة البيانات باستعلام ثقيل. ولو الرقم طلع كبير، فهنا بالضبط يبدأ SSE أو WebSockets يوفّرون فعلاً، مو قبل.

التكلفة الخفية لاتصال يبقى مفتوحاً

WebSockets تنعرض في الشروحات كسطرين: اتصل، واستمع. في الإنتاج القصة أطول:

  • الاستضافة: منصات الدوال بدون خادم مبنية على طلبات قصيرة، وأغلبها ما يناسب اتصالات تبقى مفتوحة ساعات. تحتاج خادماً يعيش طويلاً أو خدمة مُدارة.
  • التوسّع: لو عندك أكثر من نسخة من الخادم، رسالة وصلت للنسخة الأولى لازم توصل لمستخدم متصل بالنسخة الثانية. هنا تدخل طبقة نشر واشتراك مثل Redis، وإعدادات خاصة في موازن الحمل.
  • إعادة الاتصال: الجوال يدخل نفقاً ويطلع، أو يغيّر من واي فاي لشبكة الجوال. لازم إعادة اتصال بفواصل تتزايد، مو محاولة كل نص ثانية تقتل البطارية والخادم.
  • الرسائل الضائعة: وقت الانقطاع فيه أحداث صارت. كل رسالة تحتاج رقماً متسلسلاً أو وقتاً، والعميل لما يرجع يقول «آخر شي وصلني كذا»، والخادم يرسل الباقي.
  • الهوية والصلاحيات: الاتصال المفتوح لازم يتحقق من المستخدم وقت الفتح، ولازم يتعامل مع انتهاء الجلسة وهو مفتوح.
  • الخلفية في الجوال: أنظمة التشغيل توقف الاتصالات لما ينتقل التطبيق للخلفية. فلا تعتمد على WebSocket توصل رسالة لتطبيق مقفول.

عشان كذا فيه خدمات مُدارة تشيل عنك هذا الحمل، مثل الاستماع اللحظي في Firebase و Supabase وخدمات متخصصة بالقنوات. هي غالباً الخيار الأذكى لفريق صغير، بشرط تحسب تكلفتها مع عدد المتصلين المتوقع، وتراجع قواعد الأمان عليها بنفس جدية قواعد قاعدة البيانات.

وين يقع مشروعك على السلّم؟

محادثة بين عميل وخدمة العملاء: WebSockets أو خدمة لحظية مُدارة، مع إشعارات للرسائل وقت قفل التطبيق. تتبّع حالة طلب: استطلاع كل عشر ثوانٍ والشاشة مفتوحة، أو SSE، مع إشعار عند كل تغيير مهم. ردود نموذج ذكاء اصطناعي تظهر كلمة كلمة: بث من الخادم في اتجاه واحد، وهذا أقرب لـ SSE منه لـ WebSockets. لوحة تقارير إدارية: تحديث عند الفتح وزر تحديث، ولا شي غيره. والأسعار اللي تتغير كل ثانية في منصة تداول: هذي فعلاً تستاهل قناة مفتوحة.

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

عندك فكرة؟ الاستشارة الأولى علينا

كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.

مقالات ذات صلة

كل المقالات
عبدالله عبدالرحيم سنكر — الخصوصية ميزة تنافسية
AZHAL

الخصوصية ميزة تنافسية

عبدالله عبدالرحيم سنكر

4 أكتوبر 20264 دقائق قراءة

عبدالله عبدالرحيم سنكر: الخصوصية أولاً ميزة تنافسية مو عبء

عبدالله عبدالرحيم سنكر يفكك خمس خرافات تخلي أصحاب المشاريع يشوفون الخصوصية عبئاً، ويشرح كيف يصير جمع بيانات أقل سبباً في ثقة أعلى، ومسؤولية أخف، ومراجعة متجر أسهل.

اقرأ المقال
عبدالله سنكر — تحليل المنافسين بالذكاء الاصطناعي
AZHAL

تحليل المنافسين بالذكاء الاصطناعي

عبدالله سنكر

4 أكتوبر 20264 دقائق قراءة

تحليل المنافسين بالذكاء الاصطناعي: عبدالله سنكر من جمع البيانات إلى القرار

عبدالله سنكر يشرح مراحل نظام آلي لتحليل المنافسين: وش تراقب، وكيف تجمع البيانات العامة بشكل نظامي، وليش النموذج يقرأ الفرق مو الصفحة، وكيف يتحول التقرير إلى قرار.

اقرأ المقال
عبدالله عبدالرحيم سنكر — قياس نجاح التطبيق
AZHAL

قياس نجاح التطبيق

عبدالله عبدالرحيم سنكر

4 أكتوبر 20264 دقائق قراءة

عبدالله عبدالرحيم سنكر: كيف تقيس نجاح منتجك بعد الإطلاق بأرقام تهم؟

عبدالله عبدالرحيم سنكر يشرح أربعة أسئلة تقيس فيها نجاح المنتج بعد الإطلاق: هل وصل الناس للقيمة، وهل رجعوا، ووين يطيحون، وهل يدفعون، مع أخطاء القياس الشائعة.

اقرأ المقال