2015-12-12 24 views

risposta

5

Ho appena guardato il socket in Firebug, c'è un membro chiamato "_callbacks".

contiene tutti i richiami registrati, in modo da rilevare se uno è già registrato è semplice come:

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

questo è tutto!

+1

Per me (utilizzando socket.io-client/engine.io-client su node.js), i nomi dei gestori di tutti sono $ davanti. vale a dire. 'socket._callbacks [" $ "+ strHandlerName]' – kryo

1

Sono abituato a lavorare in questo modo.

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

Si tratta di buone pratiche

Problemi correlati