0
我似乎無法重寫net.Socket.write。下面的例子不是我真正的用例,而是一個縮小的,可運行的示例來演示這個問題。無法覆蓋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");
});
預期輸出:
發送...
結束插座...
服務器接收到的數據:測試寫入
測試結束
實際輸出:
結束插座...
服務器接收到的數據:測試寫入
測試結束
的覆蓋端函數被調用,你可以從輸出中看到,但只有原始的net.Socket.write被稱爲。我覺得我失去了一些東西......
哇,這是快!謝謝! –