2016-08-30 2 views
0

Я пытаюсь создать собственную версию, которая подходит для моих нужд, методов emit() и on() сокета.io. я был в состоянии сделать это для метода Emit(), как это:Wrap socket.io emit and on methods

socket._emit = function() { 
     console.log('socket._emit ', arguments); 
     event = arguments[0]; 
     data ={ 
      'username': user.username, 
      'token': user.token, 
      'data': arguments[1] 
     }; 
     socket.emit.apply(this, [event, JSON.stringify(data)]); 
}; 

У меня есть проблемы, чтобы сделать это для метода на(), потому что я не в состоянии получить данные о функции обратного вызова , поэтому теперь мой пользовательский _on() не делает ничего особенного, просто вызывает значение по умолчанию().

socket._on = function() { 
     socket.on.apply(this, arguments); 
}; 

Моей целью является регистрация всех данных, полученных обратным вызовом метода on(). Я пробовал что-то вроде этого, но не работал.

socket._on = function() { 
     callback = function(){ 
      console.log('socket._on ', //arguments from arguments[1]()//); 
      arguments[1](); 
     } 
     socket.on.apply(this, [arguments[0], callback()]); 
}; 

Любая идея о том, как улучшить мой тест?

Спасибо, Алессандро

+0

Вы уже справились с этим? – Garre

+0

Да, я смог получить некоторые данные из обратного вызова. Я отправил ответ с кодом. – alessandrocaprarelli

ответ

0

Я закончил с этим решением:

var _onevent = socket.onevent; 
socket.onevent = function (packet) { 
    console.log('[S] On: ', packet); 
    _onevent.call(socket, packet); 
}; 

Вы должны исследовать чуток на packet объект, чтобы увидеть, что для вас важно.

Работает для socket.io 1.7.2.