2012-05-14 21 views
75

मैं कनेक्शन को जीवित रखने के लिए websockets में पिंग/पोंग संदेशों के बारे में पढ़ता रहता हूं, लेकिन मुझे यकीन नहीं है कि वे क्या हैं। क्या यह एक अलग फ्रेम प्रकार है? (मुझे पिंग-पोंग से संबंधित क्रोम में जावास्क्रिप्ट वेबसॉकेट ऑब्जेक्ट पर कोई भी विधि दिखाई नहीं दे रही है)। या यह सिर्फ एक डिजाइन पैटर्न है (उदाहरण के लिए मैं सचमुच सर्वर पर "पिंग" या कोई अन्य स्ट्रिंग भेजता हूं और इसे प्रतिसाद देता हूं)। पिंग-पोंग निरंतरता फ्रेम से संबंधित है?ब्राउज़र से वेबस्केट पिंग/पोंग फ्रेम भेजना

कारण मैं पूछता हूं कि मैं एक पाइथन फ्रेमवर्क का उपयोग कर रहा हूं जो कि Mongrel2 के पीछे चलता है, इसलिए मैं सोच रहा हूं कि Mongrel2 को एक विशिष्ट पिंग/पोंग संदेश भेजने का कोई तरीका है जो इसे मेरे बिना कनेक्शन को जीवित रखने के लिए कहता है पायथन ऐप को इसके बारे में चिंता करने की ज़रूरत है। इसके लिए एक अलग HTTP विधि होने के लिए एनालॉग, मुझे लगता है। और मुझे लगता है कि एक समर्पित पिंग/पोंग संदेश फ्रेम स्ट्रिंग "पिंग" की तुलना में सरल (सर्वर और नेटवर्क पर कम लोड) हो सकता है, हालांकि शायद इससे कोई फर्क नहीं पड़ता।

संपादित करें: मैंने अभी RFC 6455 देखा है और ऐसा लगता है कि पिंग और पोंग निश्चित रूप से अपने स्वयं के ऑपोड के साथ फ्रेम प्रकार नियंत्रित करते हैं। तो मैं क्रोम में जावास्क्रिप्ट से पिंग फ्रेम कैसे भेजूं?

+0

बस सर्वर से पिंग करें। हर कोई गैर मानक बंदरगाहों पर नेटवर्किंग मुद्दे के बारे में जानता है, इसलिए वे नियमित रूप से छोटे अंतराल पर पिंग शुरू कर रहे हैं। मुझे लगता है कि आप एक खराब लिखित सर्वर को पिंग कर सकते हैं, लेकिन हो सकता है कि उनके साथ कुछ भी संवेदनशील न हो। –

उत्तर

84

पिंग फ्रेम भेजने या पोंग फ्रेम प्राप्त करने के लिए कोई जावास्क्रिप्ट एपीआई नहीं है। यह या तो आपके ब्राउज़र द्वारा समर्थित है, या नहीं। ब्राउजर का समर्थन करता है और पिंग/पोंग फ्रेम का उपयोग कर रहा है या नहीं, यह सक्षम करने, कॉन्फ़िगर करने या पता लगाने के लिए कोई एपीआई भी नहीं है। इसके लिए discussion about creating a Javascript ping/pong API था। एक संभावना है कि भविष्य में पिंग्स कॉन्फ़िगर करने योग्य/पता लगाने योग्य हो सकते हैं, लेकिन यह संभावना नहीं है कि जावास्क्रिप्ट सीधे पिंग/पोंग फ्रेम भेजने और प्राप्त करने में सक्षम होगा।

हालांकि, यदि आप क्लाइंट और सर्वर कोड दोनों को नियंत्रित करते हैं, तो आप आसानी से उच्च स्तर पर पिंग/पोंग समर्थन जोड़ सकते हैं। यदि आपके पास पहले से नहीं है, तो आपको अपने संदेश में किसी प्रकार का संदेश प्रकार हेडर/मेटाडेटा की आवश्यकता होगी, लेकिन यह बहुत आसान है। जब तक आप प्रति सेकेंड सैकड़ों बार पिंग भेजने या हजारों एक साथ ग्राहकों को भेजने की योजना बना रहे हैं, तो ओवरहेड स्वयं इसे करने के लिए बहुत कम होगा।

+4

वैसे यह दुर्भाग्यपूर्ण है। हालांकि उत्तर के लिए धन्यवाद, ठीक वही जो मैं खोज रहा था। – danny

+7

यह एक शर्म की बात है कि जावास्क्रिप्ट वेबसॉकेट नई एपीआई में पिंग/पोंग लागू नहीं किया गया है। दूसरी तरफ उस कार्यक्षमता के कस्टम कार्यान्वयन को बहुत सरल होना चाहिए। अच्छी प्रतिक्रिया हालांकि (+1) – Tom

22

पिंग केवल सर्वर से क्लाइंट को भेजा जाना है, और ब्राउज़र को स्वचालित रूप से पोंग ओपकोड के साथ जितनी जल्दी हो सके जवाब देना चाहिए। तो आपको इसके बारे में चिंता करने की ज़रूरत नहीं है।

हालांकि सभी ब्राउजर मानक मानते हैं कि वे इस तरह के तंत्र को लागू करने में कुछ अंतर नहीं ले सकते हैं, और इसका मतलब यह भी हो सकता है कि कोई पोंग प्रतिक्रिया कार्यक्षमता नहीं है। लेकिन व्यक्तिगत रूप से मैं पिंग/पोंग का उपयोग कर रहा हूं, और कभी क्लाइंट नहीं देखा जो इस प्रकार के ओपकोड को लागू नहीं करता है और निम्न स्तर के क्लाइंट साइड कार्यान्वयन पर स्वचालित प्रतिक्रिया देता है।

+0

दिलचस्प है, यह सर्वर के लिए कॉल शुरू करने के लिए और अधिक समझ में आता है। आप किस वेबसर्वर का उपयोग कर रहे हैं? – danny

+0

मैं अपने मज़े के लिए .Net/Mono पर WebSockets प्रोटोकॉल के अपने कार्यान्वयन का उपयोग कर रहा हूं। सूत्र यहां पाए जा सकते हैं https://github.com/Maksims/gh12-server – moka

+1

मेरे परीक्षण में, मुझे निश्चित रूप से सामान्य ब्राउज़र मिलते हैं जो पिंग/पोंग का समर्थन नहीं करते हैं; याद नहीं कर सकता कि कौन सा –

संबंधित मुद्दे