Substituindo socket.io é emitido e ativado?

Durante o desenvolvimento, isso me ajuda muito para poder ver quais pacotes chegam e são enviados. Isso é possível no lado do servidor com o logger. No final do cliente, no entanto, não há criador de logs. Acho que estou espalhando console.log por todo o lado.

É possível substituir socket.emit e socket.on pelo console.log (argumentos)? Se eu puder substituir isso antes do meu soquete, seria realmente elegant

lguém me aconselhou a substituir o analisado

Quais são seus 2 centavos nisso?

EDITA

Tentei a sugestão de Kato e escrevi o seguinte:

var _origEmit = socket.emit;
socket.emit = function() { 
  console.log("SENT", Array.prototype.slice.call(arguments));
  _origEmit.call(socket, arguments);
};

Isso funciona. No entanto, nem tanto com socket.on. Minha estratégia é agrupar cada retorno de chamada com um console.log. Se você conhece python, é como colocar decoradores de função nos retornos de chamada que console.log os argumento

(function(socket) { 
var _origOn = socket.on;
socket.on = function() { 
  var args = Array.prototype.slice.call(arguments)
    , handlerType = args[0]
    , originalCallback = args[1];

  var wrappedCallback = function() { 
    // replace original callback with a function 
    // wrapped around by console.log
    console.log("RECEIVED", Array.prototype.slice.call(arguments));
    originalCallback.call(socket, arguments);
  }

  _origOn.call(socket, [handlerType, wrappedCallback]);
}

Alguém pode apontar por que o patch do macaco socket.on não está funcionando?

questionAnswers(4)

yourAnswerToTheQuestion