WebSocket Ping در برابر TCP Keepalive از طریق پروکسی
برای همتای WebSocket یک بررسی زندهبودن انتخاب کنید، نه اینکه سوکت TCP زنده را گواه پاسخگویی مسیر برنامه بدانید.
سوکت TCP زنده، همتای WebSocket که پاسخ میدهد و پیشرفت معنادار برنامه سه مشاهده جداگانهاند:
| شواهد | چه چیزی را ثابت میکند |
|---|---|
| زندهبودن در سطح TCP | مسیر انتقال بررسیشده در آن سطح پاسخ میدهد |
| یک Pong همخوان از WebSocket | همتا به آن کادر کنترلی پاسخ داد |
| تأییدیهٔ برنامه | برنامه یک عملیات را بر اساس پروتکل خود تأیید کرد |
پروکسی پیشرو معمولاً اتصالهای جداگانهای به سمت کلاینت و مقصد نگه میدارد. همتای TCP کلاینت همان پروکسی است، در حالی که Ping درون تونل برقرارشده تا نقطهٔ پایانی WebSocket سفر میکند.
Pong همخوان
پروتکل لازم میداند که Pong پاسخدهنده دادههای برنامهٔ Ping را حمل کند. از این همخوانی برای شناسایی یک کاوش در جریان استفاده کنید. Pong ناخواسته مجاز است اما تأییدیه نمیخواهد؛ فرستادن یکی پس از هر پیام داده شواهد متفاوتی به دست میدهد.
سازوکار ضربان قلب پشتیبانیشدهٔ کتابخانه را ترجیح دهید. جاوااسکریپت مرورگر بهجای آن به یک قرارداد ضربان قلب در سطح برنامه نیاز دارد. بازهها و آستانههای شکست را بر پایهٔ بار کاری و سیاست شبکه انتخاب کنید. توقفهای زمانبندی یا حلقهٔ رویدادِ بیشبار میتواند آستانهای سختگیرانه را از دست بدهد بدون آنکه شکست شبکه اثبات شود.
گیرنده را در حال کار نگه دارید
کلاینت برای دریافت و پردازش کادرهای کنترلی به ورودی-خروجی پیوسته نیاز دارد. مسدود کردن این سازوکار میتواند کمبود محلی را شبیه قطعی نشان دهد.
Ping ترافیک تونل میسازد، اما هر واسطه خود تعیین میکند چه چیزی سیاست بیکاریاش را برآورده میکند. هیچ ضربان قلبی تضمین محافظت در برابر سقف مطلق عمر اتصال نیست.
همتا میتواند به Ping پاسخ دهد در حالی که برنامهاش تولید بهروزرسانی را متوقف کرده، و یک اشتراک ساکت میتواند سالم باشد. وقتی هر دو مهماند، آخرین Pong معتبر و رویداد معنادار برنامه را جداگانه رصد کنید. در صورت شکست، مسیر، زمانهای سپریشده و کاوش در جریان را نگه دارید، سپس از طریق چرخهٔ عمر پشتیبانیشده ببندید یا بازیابی کنید.