ฉันกำลังพยายามใช้พร็อกซี TCP ใน Node JS ฉันมีประสบการณ์กับ Javascript มาบ้างเท่านั้น ดังนั้นฉันจึงพบปัญหามากมายระหว่างทาง ฉันค้นหาสิ่งนี้มาหลายครั้งแล้ว แต่ก็ไม่มีโชค
ปัญหาเกิดขึ้นเมื่อเบราว์เซอร์ส่งคำขอ CONNECT สำหรับ HTTPS พร็อกซีของฉันจะแยกวิเคราะห์ชื่อโฮสต์และพอร์ต จากนั้นสร้างซ็อกเก็ตใหม่ที่เชื่อมต่อกับเซิร์ฟเวอร์ หากทุกขั้นตอนเป็นไปด้วยดี ฉันจะเริ่มส่งต่อข้อความ
ส่วนหนึ่งของรหัสของฉันมีลักษณะดังนี้:
var net = require('net');
var server = net.createServer(function(clientSock) {
clientSock.on('data', function(clientData) {
var host = // get from data
var port = // get from data
if (data is a CONNECT request) {
// Create a new socket to server
var serverSock = new net.Socket();
serverSock.connect(port, host, function() {
serverSock.write(clientData);
clientSock.write('HTTP/1.1 200 OK\r\n');
}
serverSock.on('data', function(serverData) {
clientSock.write(serverData);
}
}
}
}
เนื่องจากคำขอ CONNECT ต้องการให้ทั้งซ็อกเก็ตไคลเอ็นต์และซ็อกเก็ตเซิร์ฟเวอร์เปิดจนกว่าด้านใดด้านหนึ่งจะปิดการเชื่อมต่อ โค้ดด้านบนจึงไม่มีลักษณะเช่นนี้ ทุกครั้งที่ฉันได้รับข้อมูลจากไคลเอนต์ ฉันจะสร้างซ็อกเก็ตใหม่ไปยังเซิร์ฟเวอร์ และอันเก่าจะถูกปิด
มีวิธีจัดเก็บซ็อกเก็ตเซิร์ฟเวอร์เป็นตัวแปรส่วนกลางเพื่อให้ตัวจัดการเหตุการณ์ข้อมูลสามารถนำกลับมาใช้ใหม่ได้หรือไม่ หรือมีวิธีอื่นในการแก้ปัญหานี้หรือไม่?
ขอบคุณมาก!!!!