Socket.io wrapper for an app with ReactJS components
It looks like you've written the code that already exists.


  this way multiple subscriptions for the same events can be avoided but all the interested React components can be notified on an event update


Why would you want to avoid this? There is no overhead in a function call. In fact, this is exactly how Socket.io client works (based on Emitter component):

Emitter.prototype.on =
Emitter.prototype.addEventListener = function(event, fn){
  this._callbacks = this._callbacks || {};
  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
    .push(fn);
  return this;
};


Then there is this hack. If the client will connect in less than a second, you'll miss 'connect' event:

setTimeout(function(){  // register a little late to avoid multiple callbacks.
    socket.on('connect', function(){
        console.log('connect fired');
        for(var i=0;i&lt;callOnConnect.length;i++){
            callOnConnect[i]();
        }
    });
},1000);


Last, it's a good practice to unsubscribe from events in componentWillUnmount. Your wrapper doesn't allow this.