2009-06-26 15 views
5

सर्वर-साइड पुश के विपरीत काफी विपरीत, जिसे Comet भी कहा जाता है। मैं सोच रहा हूं कि सर्वर पर जानकारी धक्का देने के लिए लंबे समय तक रहने वाले HTTP कनेक्शन का उपयोग करना संभव है।क्लाइंट-साइड HTTP पुश करना संभव है?

एक सरल एक्सएचआर के विपरीत, कनेक्शन जिंदा रखा जाएगा और डेटा अंतराल पर सर्वर से स्ट्रीम किया जाएगा, के रूप में उपयोगकर्ता को पूरा करता कार्यों आदि

मानक प्रौद्योगिकियों मैं नहीं मानता कि यह संभव है का उपयोग करना है, लेकिन मैं संभावित शोषण या इसे पूरा करने के सरल तरीकों पर सुझावों के लिए खुला हूं। उद्देश्य कम-विलंबता डेटा को पूर्ण और कुशल एक-दिशात्मक स्ट्रीमिंग के लिए सर्वर पर धक्का देना होगा।

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

+0

इसके लिए कोई कारण नहीं है। चूंकि HTTP1.1 कनेक्शन का पुन: उपयोग करता है, एक बार पहला कनेक्शन स्थापित हो जाने के बाद, बाद के कनेक्शन अविश्वसनीय रूप से तेज़ होते हैं; मानक AJAX तकनीकें सर्वर पर लंबे समय तक रहने वाले कनेक्शन को बनाए रखने, कनेक्शन विफलताओं को संभालने, आदि से संबंधित किसी भी प्रकार के मुद्दों के बिना इसे हल करती हैं – jvenema

उत्तर

1

मैं एक बार पीछे http://orbited.org/

यह मानक प्रौद्योगिकी का उपयोग करता है एक कनेक्शन सर्वर और ग्राहक आप सामान नीचे धक्का कर सकते हैं के बीच खुली रखने के लिए एक js पुस्तकालय है पुरुष द्वारा एक बात देखा।

+0

निश्चित रूप से जो कुछ मैं ढूंढ रहा हूं उसके आधार पर, हालांकि यह बेहतर होगा अगर यह मानक पोर्ट 80 पर काम करेगा। –

+0

यह एक सारणित कनेक्शन है, हालांकि, कई HTTP अनुरोधों का उपयोग कर समाप्त हो सकता है (जितना प्रति संदेश)। लेकिन यह पोर्ट 80 पर चलाया जा सकता है (बिल्कुल, बिल्कुल नहीं, एक ही आईपी पर एक वेब सर्वर के रूप में)। – Miles

1

यह कुछ एक तरीके से किया जा सकता है ...

आप कर सकते हैं keep a connection open और कर पोस्ट की, या मैं इसे एक बहु हिस्सा पोस्ट करने के लिए संभव है यकीन है।

+0

नहीं, निश्चित रूप से किसी भी तरह से वही नहीं है। –

+0

प्रश्न कुछ डेटा भेजने के बारे में है, फिर एक नया HTTP अनुरोध शुरू किए बिना कुछ और डेटा भेजना - यानी। न केवल सामान्य पोस्ट। –

+0

हालांकि आप कनेक्शन को खोल सकते हैं, और क्या बहु-भाग प्राप्त करने का अनुरोध करना संभव है? उन दो परिदृश्यों में से कोई भी ठीक काम करेगा। – Nippysaurus

1

इस यह करता है: http://www.speich.net/projects/programming/firebug-testing.php

और इसे देखो: http://en.wikipedia.org/wiki/Comet_(programming)) और 'एक्स-मिश्रित की जगह'

Firefox पर अपने एक्सएचआर करो लिए चारों ओर गूगल। अजीब फ़ील्ड सेट करने के लिए इसे सीधे इस्तेमाल करना चाहिए या XHR ऑब्जेक्ट को पकड़ना चाहिए। xhr.multipart = सत्य और ऑनलोड हैंडलर का उपयोग करें, पहले से ही नहीं है।

सर्वर को माइम प्रकार 'मल्टीपार्ट/एक्स-मिश्रित-प्रतिस्थापन' के साथ डेटा वापस करना चाहिए। प्लस एक मल्टीपार्ट विभाजक। प्रत्येक सैल्वो के लिए अंतिम बाइट्स प्राप्त करने के लिए फ्लश करें। मैं अभी भी इसे चिकनी पाने की कोशिश कर रहा हूं।

सफारी (~ = क्रोम) यह कर सकता है लेकिन विवरण अलग हैं। तैयार होने पर अपने हैंडलर को कॉल करेंस्टेट = 3, 4 नहीं। और हर बार जब नया टेक्स्ट परिणाम टेक्स्ट में जोड़ा जाता है, तो अकेले नहीं। आईई पर काम करने के लिए कुछ भी नहीं मिल सकता है।

0

यदि आप द्वि-दिशात्मक ब्राउज़र-सर्वर संचार की तलाश में हैं, तो आप शायद WebSockets खोज रहे हैं। उपलब्ध कार्यान्वयन के लिए विकिपीडिया लेख के नीचे देखें।

+0

धन्यवाद :) यह 3 साल पहले था, सॉकेट लगभग उतने ही दूर नहीं थे जितना वे आज हैं। –

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