2011-01-26 8 views
7

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

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

क्या एपइंजिन चैनल एपीआई का उपयोग करते समय किसी चैनल को पहले ही खोला गया है, तो किसी को भी जांचने के लिए एक बुद्धिमान तरीका पता है (सर्वर पक्ष)?

उत्तर

18

भाग 1: को सुलझाने आपकी समस्या

भाग देखें 2 नीचे यदि आप वास्तव में ग्राहक कनेक्शन ट्रैक करने की जरूरत है, लेकिन मैं आपकी समस्या का समाधान होगा के लिए करता है, तो क्या आप पूछ रहे हैं अपने प्रश्न से यकीन नहीं है।

मुझे देखने दो कि मैं आपकी समस्या को दोबारा गूंज सकता हूं: आप चैट ऐप लिख रहे हैं, लेकिन यह ऐसी साइट के लिए है जो पूरी तरह से AJAX नहीं है (जिस तरह से, कहें, जीमेल है); साइट में पेज नेविगेशन है जहां उपयोगकर्ता किसी अन्य पृष्ठ के लिंक पर क्लिक करने के बाद आपको अपना चैनल फिर से सेट करने की आवश्यकता हो सकती है। जब उपयोगकर्ता नेविगेट किया जाता है, तो नया पृष्ठ प्रस्तुत किया जाता है, और आप उस बिंदु पर एक नया टोकन प्राप्त करने से बचना चाहते हैं; आप मौजूदा टोकन और चैनल को उसी क्लाइंट-आईडी के साथ पुन: उपयोग करना चाहते हैं।

यदि यह सही है, तो मेरे पास दो वैकल्पिक समाधान हैं, एक आसान लेकिन महान उपयोगकर्ता अनुभव के साथ, एक चालक लेकिन बहुत आसान अंत परिणाम के साथ।

  • कुकी में टोकन को सुरक्षित रखें। जब आप अपना पृष्ठ दोबारा प्रस्तुत करते हैं, तो चैनल.क्रेट_चैनेल को दोबारा कॉल करने के बजाए कुकी से टोकन का उपयोग करें। जब टोकन समाप्त हो जाता है तो आपको एक आतंक कॉलबैक मिलेगा जैसे कि उपयोगकर्ता मूल पृष्ठ पर रहा था; इस बिंदु पर, फिर से channel.create_channel पर कॉल करें। इसके साथ समस्या यह है कि धूमकेतु कनेक्शन की प्रकृति के कारण पुनः कनेक्शन धीमा हो सकता है (खराब मामलों में 10 सेकंड या उससे अधिक)।

  • अपनी पूरी साइट को लपेटें जो एक आईफ्रेम में चैट-संबंधित नहीं है। बाहरी iframe में अपने चैनल निर्माण कोड और यूआई रखो। इस तरह जब भी उपयोगकर्ता नेविगेट करता है तो आपको फिर से कनेक्ट करने की आवश्यकता नहीं होती है। यह नेविगेशन पर डाउनटाइम से बचाता है। ध्यान दें कि orkut इस तकनीक का उपयोग फ्लोटिंग divs के साथ करता है, क्योंकि फायरबग जांच की एक छोटी राशि प्रकट होगी।

भाग 2: आपका सुविधा का अनुरोध

यदि ऐसा पाया जाता मैं गलत समझ रहा हूँ और तुम सच में ग्राहक कनेक्शन ट्रैक करने की जरूरत है:

वहाँ नहीं है अगर एक जांच करने के लिए निर्मित एक रास्ता क्लाइंट अब क्लाइंट-आईडी द्वारा पहचाने गए चैनल से जुड़ा हुआ है।

हालांकि, मैं अभी "उपस्थिति" (चैट अर्थ में) जोड़ने पर काम कर रहा हूं ताकि आपका ऐप एक पोस्ट प्राप्त करने के लिए पंजीकरण कर सके जब कोई क्लाइंट किसी दिए गए क्लाइंट आईडी के साथ बनाए गए चैनल से कनेक्ट या डिस्कनेक्ट हो।आप यह भी पूछने के लिए उपस्थिति की "जांच" करने में सक्षम हो सकते हैं कि कोई दिया गया क्लाइंट आईडी कनेक्ट है या नहीं (अभी भी इस भाग के विवरण पर काम कर रहा है)।

ध्यान दें कि यह टोकन-आधारित नहीं बल्कि क्लाइंट-आईडी आधारित होगा।

मेरे पास अभी तक इसके लिए एक निश्चित रिलीज दिनांक नहीं है लेकिन जैसा कि मैंने कहा है कि मैं अभी सक्रिय रूप से इस पर काम कर रहा हूं।

इस बीच, आप अपने क्लाइंट से दिल की धड़कन HTTP अनुरोध का उपयोग अपने ऐप पर वापस कर सकते हैं, जो कहता है, "हे, मैं अभी भी यहाँ हूं" हर मिनट या तो। आपको कुछ प्रकार का कार्य करने की आवश्यकता होगी जो हर 2, कहता है, 2 मिनट और किसी भी क्लाइंट को चिह्नित करता है जिसने निष्क्रिय के रूप में चेक नहीं किया है, और आपको इस डेटा को कहीं भी स्टोर करना होगा।

+0

वाह, महान जवाब। मैं इसे अगले कुछ घंटों में पचाने जा रहा हूं। धन्यवाद व सादर आभार। -एलेक्स –

+0

आपने मेरी समस्या को सटीक रूप से प्रतिबिंबित किया है, और आपके द्वारा प्रस्तावित समाधान उचित कार्य प्रतीत होते हैं। मुझे लगता है कि आईफ्रेम समाधान दिलचस्प लग रहा है और शायद मेरी समस्या का समाधान करेगा। –

+0

मोइशे, अगर आपको अगली रिलीज में "उपस्थिति" मिलती है तो मैं आपको एक स्वादिष्ट तुर्की सैमीच खरीदूंगा। kthnx :) –

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

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