2015-12-12 9 views
5

क्या होता है यदि आप सॉकेट पर एक ही फ़ंक्शन के लिए 'ऑन' विधि को कई बार कॉल करते हैं तो क्या होता है? क्या यह पिछले बार पंजीकृत अंतिम कार्य को कई बार बुला रहा है या क्या यह अधिक संसाधनों का उपयोग करता है?socket.io क्लाइंट: यह निर्धारित करने के लिए कि कोई हैंडलर पहले से स्थापित है या नहीं

यदि यह बाद में है, तो आप कैसे निर्धारित करते हैं कि एक हैंडलर पहले ही पंजीकृत है या नहीं?

उत्तर

5

मैंने फायरबग में सॉकेट को देखा, वहां '_callbacks' नामक एक सदस्य है।

if (socket._callbacks[strHandlerName] == undefined) { 
    //Handler not present, install now 
     socket.on(strHandlerName, function() { ... }); 
    } 

यह Thats:

यह इसलिए यदि एक पहले से पंजीकृत है के रूप में सरल है का पता लगाने के सभी पंजीकृत कॉलबैक होता है,!

+1

मेरे लिए (Node.js पर socket.io-क्लाइंट/engine.io-क्लाइंट का उपयोग), हैंडलर नाम सभी सामने डॉलर हैं है। अर्थात। 'socket._callbacks [" $ "+ strHandlerName]' – kryo

1

मुझे इस तरह से काम करने के लिए उपयोग किया जाता है।

var baseSocketOn = socket.on; 

    socket.on = function() { 
     var ignoreEvents = ['connect'] //maybe need it 

     if (socket._callbacks !== undefined && 
      typeof socket._callbacks[arguments[0]] !== 'undefined' && 
      ignoreEvents.indexOf(arguments[0]) === -1) { 
       return; 
     } 
     return baseSocketOn.apply(this, arguments) 
    }; 

यह सबसे अच्छा अभ्यास

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

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