2016-08-06 40 views
0

Ich hatte Abhöraufrufe in der socket.io-Datei unter node_modules/socket.io/lib/client.js mit Version 1.3.7 gebaut (zumindest denke ich, aber ich muss auf 1.4.5 aufgrund anderer Anforderungen aktualisieren). Diese Änderungen ermöglichten die Fälschung von Informationen aus dem Sender-Socket, und sie wurden durchgeführt, bevor die Daten an den Empfänger-Socket gesendet wurden.Wie bekomme ich "Empfänger" Socket-Objekt in socket.io /lib/client.js Datei auf v> 1.4.0?

Vor (etwa 1.3.7), wobei das Verfahren lief, bevor ein Paket gesendet wurde der folgende:

Client.prototype.packet = function(packet, preEncoded, volatile){ 
var self = this; 
var sockets = this.sockets[0]; //this helds the socket object 

aber jetzt (1.4.5) Socket.io seine Forderung an die folgende

geändert
Client.prototype.packet = function(packet, opts){ 
var sockets = this.sockets[0]; //gives undefined 

Ich habe versucht, durch die angegebenen Objekte zu sehen, konnte aber nicht die Sockets des Empfängers Benutzer finden.

Zurück in 1.3.7 Ich war in der Lage, mühelos zu einem Socket-Objekt Eigenschaften (zB: socket.some-Eigenschaft = 1; in der .js-Datei von Nodejs im Stamm des Servers ausgeführt) und später in der Lage sein Um diese some-property wieder in node_modules/client.js zu bekommen, wann immer der Empfänger ein Paket bekam, konnte ich den Anruf abfangen, aber jetzt funktioniert es nicht und ich möchte meinen alten Code auf diesen neuen Kontext anwenden, damit alles wieder funktioniert .

+0

Erstellen Sie Ihr eigenes Socket-Objekt. –

+0

@TheMatrixISReal was soll das überhaupt heißen, du verstehst wie socket.io richtig funktioniert? Ich kann nicht einfach ein Socket-Objekt erstellen, wenn es nicht im gesamten Kontext funktioniert und die angeblichen Aufrufe nicht durchläuft. – Fane

Antwort

0
var socketObject = {}; 
io.sockets.on('connection', function (client) { 
    socketObject[client.id] = {socket: client}; 
    client.on('data', function (somedata) { 
     socketObject[client.id].data = someData; 
    });  
    client.on('disconnect', function() { 
     delete socketObject[client.id]; 
    }); 
}); 
+0

Das würde erfordern, dass ich die ganze Arbeit, die ich schon getan habe, komplett ändern würde, was sehr viel wäre. Es muss sicherlich eine Möglichkeit geben, das Paket in der neuen Version abzufangen und es mit Zugriff auf das Socket-Objekt entsprechend zu ändern. Hast du eine Idee dazu? – Fane

+0

Darüber hinaus beantwortet dies nicht einmal die Frage. Ich kann die mit dem Code empfangenen Pakete nicht abfangen. – Fane