Добавить в корзинуПозвонить
Найти в Дзене
Chris Roylance

CMS на Bun.js. Часть 2. Формируем сервер.

Всем привет и мы продолжаем разработку cms на основе bun.js. В предыдущей статье мы с вами создали простой сервер на основе express.js. В данной статье мы с вами вынесем сервер в отдельный файл server.kernal.ts который будет находиться в директории kernal. Сформируем класс для работы с сервером, его запуском, остановкой, просмотром его статуса. Начнем с каркаса файла server.kernal.ts, в котором будет вызов библиотеки express.js, сам класс Server и его экспорт. Теперь создадим несколько функций в нашем классе, и переменные для хранения состояния сервера. Все функции будут статическими. Сначала разберем переменные app и server. В app будет храниться expressjs сервер со всеми настройками, промежуточными обработчиками, маршрутами. В server будет храниться уже сам http-сервер. Далее рассмотрим две приватные статические функции initGlobalMiddleware и initRoute. В initGlobalMiddleware будут храниться все промежуточные обработчики для логирования состояния сервера, парсинга данных поступаемых

Всем привет и мы продолжаем разработку cms на основе bun.js. В предыдущей статье мы с вами создали простой сервер на основе express.js. В данной статье мы с вами вынесем сервер в отдельный файл server.kernal.ts который будет находиться в директории kernal. Сформируем класс для работы с сервером, его запуском, остановкой, просмотром его статуса.

Начнем с каркаса файла server.kernal.ts, в котором будет вызов библиотеки express.js, сам класс Server и его экспорт.

-2

Теперь создадим несколько функций в нашем классе, и переменные для хранения состояния сервера. Все функции будут статическими.

-3

Сначала разберем переменные app и server. В app будет храниться expressjs сервер со всеми настройками, промежуточными обработчиками, маршрутами. В server будет храниться уже сам http-сервер.

Далее рассмотрим две приватные статические функции initGlobalMiddleware и initRoute. В initGlobalMiddleware будут храниться все промежуточные обработчики для логирования состояния сервера, парсинга данных поступаемых на сервер. В initRoute будут уже все маршруты которые будут у нашей cms, данные маршруты будут агрегированы по смыслы, в первый статье мы с вами рассматривали основные маршруты которые будут в cms.

Функции start, stop и status отвечают как раз за работу самого сервера.

Все функции мы будем заполнять по порядку и начнем со start.

-4

Функция start мы обернули в try/catch для отлова всех ошибок, которые могут возникнуть в ходе работы сервера.

this.app = express()

Инициализирует express для его выполнения. Далее мы вызываем ранее озвученные функции initGlobalMiddleware и initRoute.

this.server = http.createServer(this.app);
this.server.listen(10000);

В этих строчках мы сначала подготавливаем http-сервер, после чего запускаем его на порту 10000.

После создания функции start давайте реализуем status и попробуем запустить сервер.

В функции status будем выводить данные о ip, типу сети (ipv4 или ipv6) и порт на котором запущен север, а также общий статус состояния сервера. Для этого мы сначала создадим тип данных, в котором будет 4 этих поля, 1 обязательно и 3 не обязательных. Знаком ? отображаются необязательные типы данных.

-5

Подготовив все для работы с функция проверки статуса мы ее реализуем.

-6

Разберем по порядку,

В 73 строке мы создали переменную statusServer с ранее созданным интерфейсом (типом данных) и сразу же заполнили одно обязательное поле statusServer. Далее мы создаем try/catch и уже в пределах этого блока мы проверяем существует ли информация о сервере в переменной this.server. this позволяет обращаться к переменным и функция в пределах своего класса.

В 76 строчке мы изменяем значение на то, что сервер запущен.

В 77 строчке, производим присваивание с явной типизацией (явная типизация выставляется в <>). Информирование о явной типизации доступна только в том случае, когда у вывода переменной может быть несколько типов данных.

В строчка 78, 79, 80 производиться присваивание.

В 82 производиться вывод информации в консоль.

Создав запуск и проверку статуса работы сервера, давайте его запустим. Для этого в файле cms.ts удалим все и добавим следующие строчки.

-7

Строка 1 импорт нашего класса, перед импортом любого компонента, необходимо его экспортировать, с кастомными типами данных картина обстоит точно также.

В строке 3 мы производим запуск сервера, а в строке 4 мы уже проверяем статус сервера.

Вывод в консоль и будет выгладить следующим образом, в первой запуске сервера сервер будет запущен, а во-второй запуск севера будет закомментирован для примера работы.

-8

Теперь реализуем функцию остановки сервера и проверим как все работает.

-9

Сама по себе функция остановки сервера очень компактная. Производиться вызов только одной функции о server, которая производит остановку сервера. В дальнейшим мы реализуем возможность взаимодействия с сервером через локальную консоль. Проверять работоспособность сервера будем по средством добавления в файле cms.ts запуска сервера, проверку статуса сервера, после чего произведем остановку сервера и проверку статуса еще раз. Файл cms.ts в таком случае будет выглядеть следующим образом.

-10

А при запуске такого когда в консоле будет следующие сообщения:

-11

В следующей статье начнем работу со служебной БД (ее инициализацией, проверкой существующих данных, чтением конфигурации и применение этих конфигов для запуска сервера). В которой будет храниться конфигурация о сервере и его логи.