Во время разработки мне очень помогает видеть, какие пакеты поступают и отправляются. Это возможно на стороне сервера с помощью регистратора. Однако на стороне клиента нет регистратора. Я нахожусь в том, что мусор console.log повсюду.
Можно ли переопределить socket.emit и socket.on с помощью console.log(аргументы)? Если я могу переопределить это в моем сокете, это будет очень изящно.
Кто-то посоветовал мне вместо этого переопределить Парсер.
Какие ваши 2центы на этом?
ИЗМЕНИТЬ
Я попробовал предложение Като и написал следующее:
var _origEmit = socket.emit;
socket.emit = function() {
console.log("SENT", Array.prototype.slice.call(arguments));
_origEmit.call(socket, arguments);
};
Это работает. Однако, не так много с socket.on. Моя стратегия состоит в том, чтобы обернуть каждый обратный вызов с помощью console.log. Если вы знаете python, это похоже на то, чтобы положить декораторы функций на обратные вызовы, которые console.log аргументы.
(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]);
}
Кто-нибудь может указать, почему обезьяна patching socket.on не работает?