توفّر واجهة WebSocket في المتصفح send(). وهي لا تكشف دالة ping() عامة تتيح لـ JavaScript إرسال إطارات Ping الخاصة بالبروتوكول.

إذا أرسل تطبيقك رسالة نصية مثل {"type":"heartbeat"}، فهذه بيانات تطبيقية. وعلى الخادم أن يفهم الرسالة ويحدّد ردًا لها. والخادم الذي لا يطبّق هذا العقد غير ملزم بالرد بحزمة Pong خاصة بالبروتوكول لمجرد أن النص يحتوي على كلمة ping.

حدّد ما تعنيه الإشادة، وكيف تتعرف على النبضة المعلّقة، ومتى تصبح الإشادة القديمة متأخرة جدًا. وافصل ذلك عن الإشادة بعملية تجارية.

مؤقّت JavaScript له أيضًا قيود في الجدولة. فالتبويبات في الخلفية والخيوط الرئيسية المشغولة قد تؤخر عمليات الاستدعاء. لا تفسّر فقدان حدّ مؤقّت دقيق كدليل قاطع على أن الوسيط توقف عن تمرير البيانات.

يستطيع المتصفح معالجة إطارات التحكم الخاصة بالبروتوكول داخليًا، لكن ذلك لا يمنح كود التطبيق رؤية محمولة لكل حزمة Ping أو Pong. وإذا احتاجت الصفحة إلى قرارها الخاص بالحياة، فاستخدم عقدًا تطبيقيًا صريحًا وسياسة استرداد.

المقبس الذي تكون قيمة readyState فيه OPEN يُعدّ مفتوحًا محليًا؛ وهو ليس قياسًا مستقلًا على أن التطبيق البعيد قد عالج رسالتك الأخيرة. استخدم الدليل الذي يطابق السؤال الذي تحتاج فعليًا إلى إجابته.

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