2012-03-12 22 views
6

मैंने एक साधारण वेब एप्लिकेशन बनाया है जो socket.io का उपयोग कर node.js सर्वर के माध्यम से कुछ संचार करता है।क्या socket.io फिर से कनेक्ट कनेक्ट कनेक्ट करता है?

जब कोई उपयोगकर्ता कनेक्ट करता है, नोड वापस जानकारी को संचारित करता है जो क्लाइंट को कुछ घटनाओं की सदस्यता लेने के लिए कहता है। यह ठीक काम करता है।

लेकिन यदि आप ब्राउज़र को निष्क्रिय सेट करते हैं, तो ग्राहक दो बार ईवेंट की सदस्यता लेता है। सदस्यता प्रक्रिया इस तरह काम करता है:

socket.on('adduser', function(data) 
    <snip> 
    socket.emit('nodeinfo', {node_id: NODE_ID}); 
    socket.emit('update', {msg: 'you are connected'}); 

सॉकेट:

एक उपयोगकर्ता Node.js एक 'adduser' संदेश

दो प्रमुख चीजें हैं जो कि समारोह में hapen हो जाता है जोड़ता है जब ऐसा कर रहे हैं। उत्सर्जित करें ('nodeinfo') क्लाइंट को घटनाओं की सदस्यता लेने के लिए संकेत देता है।

तो ग्राहक

socket.on('nodeinfo', function(data) { ... } 

है बात, console.log() फ़ंक्शन करें 'adduser' में से कोई भी नोड तरफ फिर से बुलाया हो यह कभी नहीं कहते हैं कि दो बार 'आप जुड़े हुए हैं' है। ऐसा होने वाली एकमात्र चीज है node.js nodeinfo को फिर से उत्सर्जित करता है (या तो क्लाइंट सोचता है) जिससे ग्राहक फिर से सदस्यता लेता है।

क्या कोई मुझे बता सकता है कि socket.io काम में फिर से कनेक्ट कैसे होता है और यह कैसे हो सकता है?

उत्तर

4

डिफ़ॉल्ट रूप से ग्राहक डिस्कनेक्ट के बाद पुनः कनेक्ट करने का प्रयास करता है। यदि आप चाहते बदला जा सकता है: socket.io client

तो पुन: कनेक्ट, सर्वर एक नया कनेक्शन देखेंगे और यह तर्क लागू करने के लिए पिछले एक के साथ नए कनेक्शन की पहचान के लिए आप पर निर्भर है। तो अभ्यास में - "कनेक्शन" पर अपने योजक तर्क को लागू करने के बजाय क्लाइंट सर्वर पर कुछ जानकारी भेजता है (या नहीं)।

+0

हां। नतीजे के साथ मैं बस ध्यान देता हूं कि हमारे ऐप के साथ क्या होता है। धन्यवाद – Xin

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