Рубрики
Без рубрики

Как я построил альтернативу NGROK

Вот быстрое вступление того, что я построил NGROK – это фантастический инструмент, который помогает разработчикам разоблачить … Теги с Python, Go, SideProjects, JavaScript.

Вот быстрое вступление того, что я построил

NGROK Является ли фантастическим инструментом, который помогает разработчикам разоблачить их местное место в Интернет с минимальными усилиями. Однажды я собирался поделиться местный проект с клиентом, не развертывая его где-то. Но на этот раз мне нужно было разоблачить 2 порты : Один бегущий интерфейс и другая бэкэнда проекта, я обнаружил, что бесплатный план Ngrok позволяет только один туннель за раз. Позже в тот день я также узнал, что есть 40-запрос/минутный лимит .

БАМ! Идея. Что, если я построю альтернативу, а не заплатить 5 долларов США. Вот что делают разработчики, верно? У меня также была идея сделать это открытым источником.

Пришло время планировать. Очевидно, что 3 части:

  • Разработчик с инструментом командной строки (CLI)
  • прокси-сервер
  • клиент с браузером.

Я был уверен, что должно было быть хотя бы эти шаги, чтобы сделать это работать:

  1. Разработчик подключается к серверу через CLI с номером порта: JPRQ 8000.
  2. Сервер отвечает назначенный домен. amazing-coder.jprq.live
  3. Клиент открывает домен в браузере: https://amazing-coder.jprq.live.
  4. Сервер получает запрос и отправляет его на CLI.
  5. CLI делает запрос на localhost в данном порте и отправляет ответ на сервер.
  6. Сервер отвечает клиенту с ответом, который он получил от CLI.

Вот график, который поможет вам представить эти шаги.

CLI и сервер должны сделать обратно и вперед связи. Тщательно управляемые розетки TCP будут делать отличную работу, но займет много времени для реализации. Я решил использовать и использовал протокол WebStocket. Как вы можете знать, Websocket является протоколом хоп-хоп и к сожалению, моя альтернатива Ngrok теперь не может поддерживать опрос и потоковое http (потому что они никогда не заканчиваются или длится слишком долго).

Инструмент командной строки написан в Python и опубликован в Pypy. В настоящее время реализует командную строку в JavaScript для публикации в NPM только для удовольствия. И серверная сторона находится в Голанге. Я думаю, что это было лучшее решение выбрать Голанг из-за его простого обмена данными между Goroutines и узнал о утечке Goroutines трудно. Теперь у меня хорошее понимание утечек памяти из-за этого проекта.

Еще одна маленькая, но эффективная ошибка, которую я сделал во время реализации связи клиент-сервер, использовал JSON. Я понял это только после добавления функции для обработки файлов. С JSON можно только сериализировать строки. Чтобы повернуть содержимое файла, байты в строку, мне нужно было использовать64. Оказывается интенсивный процесс CPU. Лучше использовать BSON, я верю.

Проект является открытым источником и ожидает вашего вклада. Найдите некоторое время, чтобы посетить Repo GitHub в github.com/azimjohn/jprq.

Держите здание, ура.

Оригинал: “https://dev.to/azimjohn/how-i-built-ngrok-alternative-3n0g”