2011-08-10 15 views
11

मैं IE के लिए jsonp-मतदान उपयोग करने की आवश्यकता पर परिवहन प्रकार परिभाषित करें, और Firefox के लिए XHR-मतदान, तो मैं इस तरह क्लाइंट की तरफ परिवहन के प्रकार को परिभाषित करने की कोशिश की:ग्राहक के पक्ष

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['xhr-polling'] 
      }); 
    } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['jsonp-polling'] 
      }); 
    } else { 
      var socket = io.connect(VG.NODE_SERVER_URL); 
    } 

मैंने फ़ायरफ़ॉक्स पर इसका परीक्षण किया और socket.io-client lib पर लॉगिंग जोड़ा।

पर

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1509

option.transports जो सही है ["xhr-polling", "flashsocket", "htmlfile", "xhr-polling", "jsonp-polling"] है। हालांकि,

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1679

पर मैं नहीं जानता कि क्यों परिवहन ["htmlfile", "jsonp- polling", "xhr-polling"] को बदलने के लिए, जो मैं सर्वर साइड पर क्या परिभाषित के रूप में उसी क्रम है।

यह पिछले विकल्प का उपयोग क्यों नहीं करता है?

+0

यह सुनिश्चित नहीं है कि प्रश्न क्या है, क्या यह अनुक्रम दिया गया है - उपरोक्त अनुक्रम - 'xhr-polling', आदि को अनदेखा किया गया है और इसके बजाय' htmlfile' पहले जाता है? क्या यह समस्या socket.io '0.8.7' के साथ दोहराती है? –

+0

आपके लिए धन्यवाद प्रश्न! यह फ़ायरफ़ॉक्स के साथ मेरे दुःस्वप्न का जवाब था। सॉकेट.ओ दस्तावेज बहुत खराब है .. यह एकमात्र जगह है जहां मुझे परिवहन विकल्प मिलते हैं। :) –

उत्तर

18

बग अब socket.io संस्करण 0.9.6 में तय हो गई है होना चाहिए, मैं इस का उपयोग कर सकते हैं और यह काम करता है ठीक:

socket = io.connect(HOST_REMOTE, { 
    transports: ['xhr-polling'] 
}); 

संस्करण 1.0.0 में और अधिक:

socket = io.connect(HOST_REMOTE, { 
    transports: ['polling'] 
}); 
+2

वर्तमान (1.3.3) स्रोत अब 'xhr-polling' की बजाय 'मतदान' का उपयोग कर रहा है। –

+0

यदि हम कनेट आईओएस, एंड्रॉइड और एचटीएमएल 5 के लिए xhr-polling और मतदान का उपयोग करते हैं, तो यह किसी भी समय या किसी अन्य डिस्क को डिस्कनेक्ट सॉकेट जैसे किसी भी मुद्दे को बना सकता है ..? –

1

socket.io.client में एक बग है।

ताकि आप क्लाइंट में परिवहन सेट कर सकते हैं नहीं ...

function Socket (options) { 
this.options = { 
    port: 80 
    , secure: false 
.... 
}; 

io.util.merge(this.options, options); 
.... 
}; 

io.util.merge(this.options, options,0);....

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