Durante lo sviluppo, mi aiuta molto a essere in grado di vedere quali pacchetti arrivano e vengono inviati. Questo è possibile sul lato server con il logger. Sul lato client, tuttavia, non esiste un logger. Mi trovo a fare i rifiuti di console.log dappertutto.Sovrascrivere socket.io emette e accende?
È possibile eseguire l'override di socket.emit e socket.on con console.log (argomenti)? Se riesco a scavalcare questo prima della mia presa, sarebbe davvero elegante.
Qualcuno mi ha consigliato di ignorare invece il parser.
Quali sono i tuoi 2cents su questo?
EDIT
Ho provato il suggerimento di Kato e ha scritto quanto segue:
var _origEmit = socket.emit;
socket.emit = function() {
console.log("SENT", Array.prototype.slice.call(arguments));
_origEmit.call(socket, arguments);
};
Questo funziona. Tuttavia, non tanto con socket.on. La mia strategia è quella di avvolgere ogni callback con un console.log. Se conosci Python, è come mettere i decoratori di funzioni sui callback che console.log gli argomenti.
(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]);
}
Qualcuno può indicare perché socket patch.on scimmia non funziona?
Grazie mille. Ha funzionato abbastanza bene. – disappearedng
Mi dispiace di avere solo 1 upvote per questo. –
Brillante, grazie – carpii