ब्राउज़र में WebSocket हार्टबीट के लिए एप्लिकेशन प्रोटोकॉल चाहिए
जब ब्राउज़र JavaScript सीधे WebSocket Ping फ़्रेम नहीं भेज सकता, तब एक तय किया गया एप्लिकेशन हार्टबीट डिज़ाइन करें।
ब्राउज़र के WebSocket API में send() है। यह JavaScript के लिए प्रोटोकॉल Ping फ़्रेम भेजने की कोई सामान्य ping() विधि उजागर नहीं करता।
अगर आपका एप्लिकेशन {"type":"heartbeat"} जैसा टेक्स्ट संदेश भेजता है, तो वह एप्लिकेशन डेटा है। सर्वर को संदेश समझना होगा और प्रतिक्रिया तय करनी होगी। जो सर्वर उस अनुबंध को लागू नहीं करता, वह केवल इसलिए प्रोटोकॉल Pong से उत्तर देने के लिए बाध्य नहीं है कि टेक्स्ट में ping शब्द है।
तय करें कि पावती का क्या अर्थ है, वह लंबित हार्टबीट को कैसे पहचानती है और पुरानी पावती कब बहुत देर से आती है। इसे किसी व्यावसायिक कार्य की पावती से अलग रखें।
JavaScript टाइमर पर भी शेड्यूलिंग की सीमाएँ होती हैं। बैकग्राउंड टैब और व्यस्त मुख्य थ्रेड कॉलबैक में देरी कर सकते हैं। छूटी हुई सटीक टाइमर सीमा को इस बात का निर्णायक प्रमाण न मानें कि प्रॉक्सी ने अग्रेषण बंद कर दिया।
ब्राउज़र प्रोटोकॉल के नियंत्रण फ़्रेम आंतरिक रूप से संभाल सकता है, लेकिन इससे एप्लिकेशन कोड को हर Ping या Pong का पोर्टेबल दृश्य नहीं मिलता। अगर पेज को अपना जीवंतता निर्णय चाहिए, तो एक स्पष्ट एप्लिकेशन अनुबंध और पुनर्प्राप्ति नीति अपनाएँ।
जिस सॉकेट का readyState OPEN है, वह स्थानीय रूप से खुला माना जाता है; यह इस बात का स्वतंत्र माप नहीं है कि दूरस्थ एप्लिकेशन ने आपका अंतिम संदेश संसाधित किया है। वही साक्ष्य इस्तेमाल करें जो उस प्रश्न से मेल खाता है जिसका उत्तर आपको वास्तव में देना है।