2011-12-12 14 views
5

मैं नोड.जेएस और सॉकेट.ओओ के साथ असली नौसिखिया हूं - इसलिए अगर यह एक मूर्ख सवाल है तो कृपया मेरे साथ भालू।सफारी और क्रोम पर सॉकेट.ओ कनेक्शन धीमा क्यों है

मैंने सॉकेट.ओओ का परीक्षण करने के लिए हेरोकू पर एक बहुत ही बुनियादी डमी स्थापित की। आप बस एक बटन क्लिक कर सकते हैं और सभी जुड़े ब्राउज़र तदनुसार एक संदेश देखते हैं। जब सर्वर स्थानीय रूप से चल रहा था तो यह बहुत अच्छा काम करता था। अब यह हैरोकू पर होने के साथ मैं सफारी और क्रोम पर कनेक्शन की समस्याएं देखता हूं। शुरुआती कनेक्शन में लगभग 10 सेकंड तक देरी हो रही है, और मुझे io.connect('http://myapp.heroku.com/') की पहली कॉल पर त्रुटि 503 मिलती है।

चीजें फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर में एक बहुत ही तत्काल कनेक्शन के साथ अच्छी तरह से काम करती हैं। इस समस्या का कारण हो सकता है पर

कोई भी विचार http://sprain.ch/socketio/ और इसे कैसे ठीक करें:

आप कार्रवाई यहाँ एप्लिकेशन देख सकते हैं?

+0

मैं फ़ायरफ़ॉक्स में भी व्यवहार को पुन: उत्पन्न कर सकता हूं .. पहले दो कॉल जल्दी वापस आते हैं, लेकिन तीसरे के बाद ऐसा लगता है कि सर्वर प्रतिक्रिया देने के लिए 20+ सेकंड ले रहा है। http://bit.ly/rtGkCD – SuitedSloth

+0

मैंने इसे फ़ायरफ़ॉक्स पर पुन: पेश नहीं किया लेकिन क्रोम पर मैंने किया। अजीब लगता है, शायद यह हेरोकू या कुछ के साथ एक समस्या है। @sprain सॉकेट.आईओ पर कौन सा संस्करण आप उपयोग कर रहे हैं और कौन से ट्रांसपोर्ट सक्षम हैं? – alessioalex

+0

मैं सॉकेट.ओ 0.7 का उपयोग करता हूं। – sprain

उत्तर

3

कुछ बातें: http://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

  • बस "io.connect()" के बजाय का प्रयास करने का URL मैन्युअल रूप से निर्दिष्ट करने के लिए प्रयास करें:

    • मैं सुझाव देंगे कि आप इन सेटिंग्स का उपयोग। सॉकेटियो के पास स्थानीय होस्ट से बात करने के लिए कुछ सुंदर ठोस अंतर्निर्मित खोज तंत्र हैं जो कि मेजबान के बावजूद है।

    • हेरोोक + सॉकेट.आईओ (अनुभव से बोलने) के बारे में कुछ भी धीमा नहीं है, इसलिए यह मुझे विश्वास दिलाता है कि आपके कोड में कुछ और चल रहा है। यदि आप थोड़ा और साझा कर सकते हैं तो निदान करना आसान हो सकता है।

    इसके अलावा आपके द्वारा लिंक किए गए पृष्ठ में FWIW में कुछ टेक्स्ट है जो कहता है "मुझे क्लिक करें!" और कोई बटन नहीं।

  • +0

    सर्वर पर सॉकेट.ओ को कॉन्फ़िगर करना उसके लिए समाधान था जब उसकेोकू पर चल रहा था। धन्यवाद!। –

    7

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

    आप का उपयोग करने के लिए 1 सेकंड टाइमआउट को कम करने की कोशिश कर सकते हैं:

    io.connect('http://myapp.heroku.com/',{'connect timeout': 1000}); 
    
    4

    यह क्योंकि वे WebSockets समर्थन नहीं करते हैं। इसलिए XHR मतदान का उपयोग करने से पहले वेबसाइकिलों का उपयोग करने की कोशिश करने से socket.io बार, जो समान नहीं है, लेकिन आपके उद्देश्यों (?) के लिए ठीक हो सकता है। WebSockets का उपयोग कर

    io.configure(function() { 
        io.set("transports", ["xhr-polling"]); 
        io.set("polling duration", 10); 
    }); 
    

    लेकिन यह एक ही बात के रूप में वास्तव में नहीं है ..: Aashay के पोस्ट में लिंक पता चलता है, अपने server.js या app.js फ़ाइल के लिए इस कोड को जोड़ने! उदाहरण के लिए OpenShift.com पर आप अब अपने ऐप पर पोर्ट 8000 से कनेक्ट कर सकते हैं और फिर यह वास्तव में websockets का उपयोग करता है, जबकि डिफ़ॉल्ट पोर्ट परेशान अपाचे के साथ समस्याओं का कारण नहीं है।

    +0

    क्रोम 200 9 तक सॉकेट का समर्थन करता है: http://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html – AlienWebguy

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