2015-12-12 22 views

答えて

5

Firebugのソケットを見ただけで、 '_callbacks'というメンバーがあります。

それはとても1がすでに登録されているかどうかを検出するのと同じくらい簡単です、すべての登録済みのコールバックが含まれています。これだけ

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

+1

で、ハンドラ名はすべて、前に$しています。すなわち、 '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) 
    }; 

これは(Node.jsの上socket.ioクライアント/ engine.ioクライアントを使用して)私にとってのベストプラクティス

関連する問題