2010-04-17 26 views
10

मैं जानना चाहता हूं कि जीमेल (या कोई और) ओपेरा पर धूमकेतु कैसे करता है।जीमेल ओपेरा पर धूमकेतु कैसे करता है?

यहां मैं अपने प्रयोगों से अब तक क्या जानता हूं।

  1. यह event-source टैग जो ओपेरा 10.51 में टूट गया है का उपयोग नहीं करता।
  2. यह आईफ्रेम का उपयोग नहीं करता है जो एक कताई थ्रोबबर और एक व्यस्त माउस कर्सर प्रदर्शित करता है।
  3. यह outputText का उपयोग xmlhttprequest पर नहीं करता है जब तैयारस्टेट = 3 जिसे ओपेरा पर टूटा जाना जाता है।

मैं देख यह कैसे Mibbit और etherpad में किया गया था की कोशिश की, और मैंने पाया कि वे दोनों लंबे समय से मतदान का उपयोग करें।

बाउंटी

इनाम जो कोई भी मुझे एक विधि की तुलना में ओपेरा धूमकेतु स्ट्रीमिंग के लिए "घटना स्रोत", या कैसे जीमेल स्ट्रीमिंग (या लंबे समय से मतदान करता है, तो यह होता है कि) करता है बेहतर बता सकते हैं करने के लिए चला जाता है।

उत्तर

9

जीमेल ब्राउज़रChannel (Docs | Source) का उपयोग करता है, जो Google के Closure Library में शामिल है। BrowserChannel वर्ग के

  • @fileoverview परिभाषा। एक ब्राउज़र चैनल
  • HTTP पर एक बिडरेक्शनल सॉकेट अनुकरण करता है। यह
  • सर्वर के लिए जीमेल चैट आईएम कनेक्शन का आधार है।
+0

यानी http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html सोचो क्या आप वास्तव में के लिए देख रहे चारों ओर यहाँ है: http://closure-library.googlecode.com/svn /docs/closure_goog_net_channelrequest.js.source.html खोज के लिए pollResponse_ और getNextChunk_ :) – hallvors

+0

आप एक छोटे से अधिक विशिष्ट हो सकता है? मुझे लगता है कि मैं एक विशाल सार पुस्तकालय के लिए सिर्फ एक लिंक से एक जवाब अधिक वारंट एक उदार पर्याप्त इनाम दिया है। – Unknown

+3

ठीक है, मैं एक तरह से लगता है कि जेसन के लिए छोड़ दिया जाना चाहिए के रूप में वह बंद करने के लिए मूल सूचक दिया और मैं तो बस एक छोटा सा गहरा चला गया .. कि स्रोत कोड को देखते हुए, यह एक समय समाप्ति है कि के साथ वास्तव में एक async XMLHttpRequest उपयोग करने के लिए, लगता है प्रतिक्रिया को मतदान करने और आने वाले डेटा को संभालने के लिए जिम्मेदार। ओपेरा कई readystatechange घटनाओं आग नहीं करता है, जबकि chunked डेटा में आ रहा है (जो फ़ायरफ़ॉक्स एक खुश दुर्घटना मुझे लगता है कि ज्यादातर है - कोई मानक या दस्तावेज इस कार्यान्वयन अनिवार्य जहाँ तक मैं जानता हूँ कि है)। तो कई तैयारस्टेटेड घटनाओं की अपेक्षा करने के बजाय वे टाइमआउट का उपयोग करते हैं। – hallvors

0

मुझे वास्तव में कोई जवाब नहीं है कि उत्तर क्या है। लेकिन मुझे पता है कि ओपेरा सर्वर-इवेंट्स का समर्थन करता है: http://my.opera.com/WebApplications/blog/show.dml/438711। शायद यह anwser की ओर एक कदम है? मुझे वास्तव में यकीन नहीं है, लेकिन मुझे लगता है कि वे इसे ओपेरा यूनिट के भीतर उपयोग करते हैं।

+0

नहीं, यह घटना स्रोत का उपयोग नहीं करता है जैसे मैं ने कहा। इवेंट-सोर्स ओपेरा 10.51 में पूरी तरह से टूटा हुआ है, और जीमेल अभी भी गेटैट को ठीक से स्ट्रीम करता है। – Unknown

0

मुझे लगता है कि बजाय क्रॉस-ब्राउज़र (सहित ओपेरा) दृष्टिकोण एक एडोब फ्लैश आवेदन के माध्यम से डेटा स्ट्रीम करने के लिए हो सकता है। हालांकि यह फ़्लैश प्लगइन पर निर्भरता पेश करेगा और इसके कारण बहुत लोकप्रिय नहीं है।

0

मैं प्रोजेस सी ++ HTTP सर्वर में लेखक हूं जो goog.netBrowserChannel के साथ संगत है। BrowserChannel हमेशा के लिए उपयोग करता है IE और एक्सएचआर सभी अन्य ब्राउज़र पर स्ट्रीमिंग पर फ्रेम

http://code.google.com/p/libevent-browserchannel-server/wiki/BrowserChannelProtocol

लंबी कहानी संक्षेप में,: आप डॉक्स मैं यहाँ प्रोटोकॉल पढ़ाई के दौरान लिखा है पा सकते हैं।

1) नेटवर्क प्रतिक्रिया सुनिश्चित करने के लिए "स्ट्रीमिंग" समर्थित है का परीक्षण (दूसरे शब्दों में कोई बफरिंग प्रॉक्सी मौजूद है)
2) एक तक पहुंच की जांच: प्रोटोकॉल कई चरणों में विभाजित किया गया है, जिनमें से पहले नेटवर्क परीक्षण है नेटवर्क उपसर्गों की विविधता (यह सुनिश्चित करने के लिए कि नेटवर्क व्यवस्थापक ने चैट तक पहुंच को अवरुद्ध नहीं किया है)

फिर वास्तविक डेटा ट्रांसमिशन शुरू हो सकता है। डेटा दो चैनलों (आगे और पीछे) में बांटा गया है। बैक चैनल क्लाइंट को "स्ट्रीम" सामग्री के लिए सर्वर के लिए लंबे समय तक रहने वाले (लगभग 4 मिनट प्रत्येक) अनुरोधों की एक श्रृंखला है। ऐसा करने के लिए HTTP खंडित एन्कोडिंग का उपयोग किया जाता है।क्लाइंट यह सुनिश्चित करने के लिए सबसे अच्छा करता है कि एक बैकचैनल हमेशा खुला रहता है। सर्वर इसे हर 4 मिनट के करीब बंद कर देगा जिसके बाद ग्राहक एक नया बैकचैनल खोल देगा। आगे चैनल का उपयोग क्लाइंट से सर्वर पर डेटा भेजने के लिए किया जाता है। डेटा की यह धक्का आवश्यकतानुसार की जाती है।

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