Saya mencoba mengimplementasikan proxy TCP di Node JS. Saya hanya memiliki sedikit pengalaman dengan Javascript jadi saya menemui banyak masalah selama prosesnya. Saya telah melakukan banyak pencarian untuk yang ini tetapi tidak berhasil.
Masalah terjadi ketika browser mengirimkan permintaan CONNECT untuk HTTPS. Proksi saya akan mengurai nama host dan port, lalu membuat soket baru yang terhubung ke server. Jika semua langkah ini berjalan dengan baik, saya akan mulai meneruskan pesan.
Bagian dari kode saya terlihat seperti ini:
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);
}
}
}
}
Karena permintaan CONNECT memerlukan soket klien dan soket server terbuka hingga satu sisi menutup koneksi, kode di atas tidak memiliki perilaku ini. Setiap kali saya menerima beberapa data dari klien, saya akan membuat soket baru ke server dan yang lama ditutup.
Apakah ada cara untuk menyimpan soket server sebagai variabel global sehingga pengendali kejadian data dapat menggunakannya kembali? Atau adakah cara lain untuk mengatasi hal ini?
Terima kasih banyak!!!!