2012-01-10 16 views
18

मैं node.js और socket.io का उपयोग करता हूं। मुझे सॉकेट.io के साथ कनेक्शन की गति में कोई समस्या है। इंटरनेट एक्सप्लोरर और ओपेरा में मुझे कनेक्शन की गति में समस्या है। - जब मैं फ्लैशसेट या वेबसाईट का उपयोग करता हूं। जब मैं परिवहन-मतदान के मोड का उपयोग करता हूं तो एक्सएचआर कनेक्शन तेजी से होता है - सभी ब्राउज़रों (आईई, एफएफ, क्रोम, ओपेरा) में।socket.io - एक्सएचआर मतदान बनाम फ्लैशसेट और वेबसाईट

परिवहन के तरीके के बीच क्या अंतर है - एक्सएचआर-मतदान और फ्लैश/वेबसाकेट? परिवहन का सबसे अच्छा तरीका क्या है? कनेक्शन की गति को अनुकूलित करने के लिए socket.io है?

सलाह के लिए धन्यवाद!

उत्तर

29

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

आईई 10 में वेबसाकेट पेश किए जा रहे हैं और ओपेरा में वे उपलब्ध हैं, लेकिन डिफ़ॉल्ट रूप से अक्षम हैं।

परिवहन के तरीके के बीच क्या अंतर है - एक्सएचआर-मतदान और फ्लैश/वेबसाकेट?

  • एक्सएचआर-मतदान - http://en.wikipedia.org/wiki/Push_technology#Long_polling
  • FlashSocket संबंध देखते हैं - एक फ्लैश सॉकेट ऑब्जेक्ट का उपयोग करता WebSocket सर्वर से कनेक्शन स्थापित करने के लिए और WebSocket प्रोटोकॉल का उपयोग संचार करता है। इसका मतलब है कि फ्लैश और जावास्क्रिप्ट के बीच बातचीत है और इसका मतलब है कि एक अतिरिक्त फ्लैश ऑब्जेक्ट (एसडब्ल्यूएफ फाइल) डाउनलोड करने की आवश्यकता होगी।

परिवहन का सबसे अच्छा तरीका क्या है?

किसी भी वेब ब्राउज़र के लिए वेबसाकेट जो मूल रूप से इसका समर्थन करता है (क्रोम, फ़ायरफ़ॉक्स, सफारी)। यदि फ़्लैश ऑब्जेक्ट (एसडब्ल्यूएफ फ़ाइल) ब्राउज़र कैश में है तो कनेक्शन तेज होना चाहिए। यदि ऐसा नहीं है तो देरी होगी। एक्सएचआर लांग-पोलिंग एक अच्छा समाधान है और क्रॉस ब्राउज़र काम करेगा लेकिन नकारात्मक हैं:

  • मतदान अनुरोधों के बीच प्रदर्शन पर डेटा पुराने (पुराने) से बाहर हो सकता है।
  • इसके बाद से HTTP लंबी मतदान WebSockets द्वारा इस्तेमाल किया एक भी TCP कनेक्शन की तुलना में एक कम कुशल कनेक्शन पद्धति है कई कनेक्शन का उपयोग करता द्वि-दिशात्मक कार्यक्षमता अनुकरण
  • HTTP एक ओवरहेड जो अतिरिक्त हेडर सूचना का मतलब अनुरोध और प्रत्येक अनुवर्ती पर भेज दिया जाता है है निवेदन।

कनेक्शन की गति को अनुकूलित करने के लिए socket.io है?

(मैं बहुत इस के लिए socket.io के लिए नया हूँ सिर्फ़ एक सुझाव है)

मैं configuring Socket.io docs देख कर आपको अगर आप सशर्त ब्राउज़र कि कनेक्ट कर रहा है के आधार पर transports सेट कर सकते हैं चाहते हैं ।अपने अनुभवों के आधार पर यह हो सकता है:

  • क्रोम, फायरफॉक्स, सफारी - WebSockets
  • आईई, ओपेरा - एक्सएचआर-मतदान
+0

मैं IE में flashsocket सेट कर सकते हैं? क्या यह आईई के साथ फ्लैशसेट काम करता है? – Jenan

+1

@ जेनान हां, FlashSocket को तब तक IE में काम करना चाहिए जब तक फ़्लैश स्थापित नहीं हो जाता है। – leggetter

4

कनेक्शन के समय को कम करने के लिए आपको कम करने के लिए कोशिश कर सकते हैं "कनेक्ट टाइमआउट" पैरामीटर का उपयोग कर टाइमआउट कनेक्ट करें (जो डिफ़ॉल्ट रूप से 10 सेकंड है)।

उदाहरण के लिए, 1 सेकंड के लिए कनेक्ट टाइमआउट कम करने के लिए:

socket = io.connect('http://your-site.com',{'connect timeout': 1000}); 
संबंधित मुद्दे