Вот диаграмма всех сервисов, задействованных в localtunnel, сгруппированных по хосту.
localhost: [localtunnel client] --- [HTTP client] --- [your server]
| |
| |
localtunnel host: [express server] --- [TCP server]
|
|
internet user: [app]
Обычно, когда вы набираете lt --port 8000
в своей консоли, он запускает localtunnel client . Это подключается к экспресс-серверу , расположенному в облаке. Этот экспресс-сервер возвращает вам адрес, к которому должно подключиться ваше приложение . Затем он запускает tcp сервер , который прослушивает соединения из вашего приложения. Сервер tcp также открывает 10 сокетов с клиентом localtunnel для отправки данных. Когда соединение приходит из приложения, tcp-сервер отправляет данные локальному туннельному клиенту по одному из 10 сокетов. Затем данные передаются на локальный http-клиент , который отправляет запрос на ваш сервер .
Чтобы ответить на ваши вопросы:
Как можно запустить другой сервер на сервере?
Сервер node.js может запускать другие процессы, используя child_process .
Какова цель открытия сокетов TCP с сервером, когда клиент может подключиться к серверу, нажав всякий раз определенный URL-адрес при необходимости?
Здесь вы путаете локальный туннельный клиент с интернет-клиентом (приложение на моей диаграмме). Сервер TCP должен содержать 2 соединения: одно с внешним миром (приложение ) и одно с клиентом localtunnel . 10 сокетов, упомянутых в статье, являются соединением с локальным туннельным клиентом и используются для отправки данных.