Ich kann nicht scheinen, net.Socket.write zu überschreiben. Das folgende Beispiel ist nicht mein tatsächlicher Anwendungsfall, sondern ein verkleinertes, lauffähiges Beispiel zur Demonstration des Problems.Kann nicht überschrieben werden net.Socket.write
const net = require("net");
class UTF8Socket extends net.Socket {
constructor() {
super();
this.setEncoding("utf8");
}
write(data, cb) {
console.log("Sending...");
super.write(data, "utf8", cb);
}
end(data) {
console.log("Ending socket...");
super.end(data);
}
}
// Setup server
const server = net.createServer(socket => {
socket.setEncoding("utf8");
socket.on("data", (res) => console.log("Server received data:", res));
});
server.listen(8080, '127.0.0.1');
// Create a UTF8Socket and write to server
const socket = new UTF8Socket();
socket.connect(8080, "127.0.0.1",() => {
socket.write("test write\n");
socket.end("test end");
});
Erwartete Ausgabe:
gesendet ...
Buchse Ending ...
Server empfangenen Daten: Testschreib
Testende
tatsächliche Ausgang:
Ending Buchse ...
Server Daten empfangen: Testschreib
Testende
Die überschrieben Ende Funktion, wie Sie genannt wird kann aus der Ausgabe sehen, aber nur das Original net.Socket.write wird jemals aufgerufen. Ich fühle mich wie ich etwas fehlt ...
Wow, das war schnell! Vielen Dank! –