HTTP и HTTPS узлов через один и тот же порт, код не ясен - PullRequest
0 голосов
/ 23 ноября 2018

я просматривал этот код для Nodejs HTTP и HTTPS через один и тот же порт link => https://stackoverflow.com/a/23975955

Теперь в коде я не могу понять, как прокситам работает

function tcpConnection(conn) {
    conn.once('data', function (buf) {
        // A TLS handshake record starts with byte 22.
        var address = (buf[0] === 22) ? httpsAddress : redirectAddress;
        var proxy = net.createConnection(address, function () {
            proxy.write(buf);
            conn.pipe(proxy).pipe(conn);
        });
    });
}

я могу понять, что https сервер на 3002 и http на 3001. Но когда переменная address имеет redirectAddress , он направляет бафф в новыйсоединение по порту адрес переадресации .Тогда как он переходит на https?

Я имею в виду, что порт 3000 переходит на 3001 и 3002. Но как 3001 переходит на 3002?это из-за перенаправления http здесь, в этой части?

function httpConnection(req, res) {
    var host = req.headers['host'];
    res.writeHead(301, { "Location": "https://" + host + req.url });
    res.end();
}

Я пробовал в Google, но не смог найти ответ на мои сомнения.

, а также мы не можем уменьшить количество портов?как здесь были использованы 2 дополнительных порта.

Также иногда из ниоткуда сервер останавливается, и я получаю эту ошибку

events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at _errnoException (util.js:1026:11)
    at TCP.onread (net.js:606:25)

в чем может быть причина?

...