2015-12-12 2 views

Antwort

5

Ich schaute nur auf die Steckdose in Firebug, gibt es ein Mitglied namens "_callbacks".

Es enthält alle registrierten Rückrufe, so erkennen, ob man schon so einfach registriert ist wie:

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

Das ist!

+1

Für mich (mit socket.io-client/engine.io-Client auf node.js), die Handler Namen alle haben vor $. dh. 'socket._callbacks [" $ "+ strHandlerName]' – kryo

1

Ich bin es gewohnt, damit auf diese Weise zu arbeiten. Diese

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) 
    }; 

ist best practice

Verwandte Themen