2016-08-30 2 views
0

Ich versuche, eine benutzerdefinierte Version zu erstellen, die für meine Bedürfnisse von emit() und on() -Methoden von socket.io entspricht. Ich konnte es für die emit() -Methode wie dies tun:Wrap socket.io emit und auf Methoden

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)]); 
}; 

ich Probleme, die für ein() Methode zu tun haben, weil ich nicht in der Lage bin, die Daten der Callback-Funktion zu erhalten , so dass jetzt meine benutzerdefinierte _on() nichts besonderes macht, ruft nur den Standard auf().

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

Mein Ziel ist es, alle vom Callback der on() -Methode empfangenen Daten zu protokollieren. Ich habe so etwas versucht, aber nicht funktioniert.

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

Irgendeine Idee, wie man meinen Test verbessert?

Danke, Alessandro

+0

Haben Sie das schon ausgearbeitet? – Garre

+0

Ja, ich konnte einige Daten vom Rückruf erhalten. Ich habe eine Antwort mit dem Code geschrieben. – alessandrocaprarelli

Antwort

0

endete ich mit dieser Lösung:

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

Sie müssen ein bisschen das packet Objekt untersuchen, um zu sehen, was Ihnen wichtig ist.

Arbeitete für socket.io 1.7.2.

Verwandte Themen