2015-12-12 40 views

Odpowiedz

5

Właśnie patrzyłem na gniazdo w Firebug, jest członek o nazwie "_callbacks".

Zawiera on wszystkie zarejestrowane wywołania zwrotne, więc wykrywania jeśli ktoś jest już zarejestrowany jest tak proste, jak:

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

to wszystko!

+1

Dla mnie (za pomocą socket.io-klient/engine.io-client na node.js), nazwy Wózek wszystkie zostały $ przodu. to znaczy. 'socket._callbacks [" $ "+ nazwa_firmy]" – kryo

1

Jestem przyzwyczajony do pracy z nim w ten sposób.

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

To najlepsza praktyka