WebSocket API ของเบราว์เซอร์มี send() แต่ไม่ได้เปิดเผยวิธี ping() ทั่วไปให้ JavaScript ส่งเฟรม Ping ของโปรโตคอล

หากแอปพลิเคชันของคุณส่งข้อความข้อความอย่าง {"type":"heartbeat"} นั่นคือข้อมูลของแอปพลิเคชัน เซิร์ฟเวอร์ต้องเข้าใจข้อความและกำหนดการตอบกลับ เซิร์ฟเวอร์ที่ไม่ได้ใช้สัญญานั้นไม่จำเป็นต้องตอบด้วย Pong ของโปรโตคอลเพียงเพราะข้อความมีคำว่า ping

กำหนดว่าการตอบรับหมายถึงอะไร มันระบุฮาร์ตบีตที่ค้างอยู่ได้อย่างไร และเมื่อใดการตอบรับเก่าถือว่าสายเกินไป แยกเรื่องนี้ออกจากการตอบรับของการดำเนินธุรกิจ

ตัวจับเวลาของ JavaScript ก็มีข้อจำกัดด้านการจัดกำหนดการ แท็บพื้นหลังและเธรดหลักที่ทำงานหนักอาจทำให้การเรียกกลับล่าช้า อย่าตีความการพลาดขอบเขตตัวจับเวลาที่แม่นยำว่าเป็นหลักฐานชี้ขาดว่าพร็อกซีหยุดส่งต่อ

เบราว์เซอร์จัดการเฟรมควบคุมของโปรโตคอลได้ภายใน แต่ไม่ได้ทำให้โค้ดแอปพลิเคชันมองเห็นทุก Ping หรือ Pong ได้แบบพกพา หากหน้าเว็บต้องการการตัดสินใจเรื่องความมีชีวิตของตัวเอง ให้ใช้สัญญาแอปพลิเคชันที่ชัดเจนและนโยบายการกู้คืน

ซ็อกเก็ตที่ readyState เป็น OPEN ถือว่าเปิดอยู่ภายในเครื่อง นั่นไม่ใช่การวัดที่เป็นอิสระว่าแอปพลิเคชันปลายทางประมวลผลข้อความล่าสุดของคุณแล้ว ใช้หลักฐานที่ตรงกับคำถามที่คุณต้องตอบจริง ๆ

บทความที่เกี่ยวข้อง