Skip to content

dlabs71/d-connection-checker

Repository files navigation

D-connection-checker

NPM Version License

Библиотека для проверки подключения к удаленному сервису по IP-адресу и порту

Установка NPM

npm i @dlabs71/d-connection-checker

Использование

Данная библиотека может быть использована в любом Node.js или Electron приложении. Для корректной работы библиотеки необходим модуль Node.js - net.

D-connection-checker предоставляет класс с возможностью хранения данных о множестве подключений (IP и порт) и набором методов для проверки доступности данных подключений. Также библиотека предоставляет класс для организации циклической проверки доступности, хранимых подключений.

example-1.js

import {CheckerConnection, HostData} from '@dlabs71/d-connection-checker';

let host = HostData.build("ya.ru", 80);

let checkerConnection = new CheckerConnection();
checkerConnection.checkConnectionByHost(host)
        .then(() => {
            // сервис доступен
        })
        .catch((err) => {
            // сервис не доступен.
            // при недоступности сервиса метод проверяет коннекшен ещё 4 раза (по умолчанию), 
            // каждый раз уменьшая timeout в двое. Если все разы сервис так и не стал доступен, 
            // то считается что подключение недоступно. Данное поведение также можно изменить при помощи 
            // доп. параметров метода или параметров конструктора
        });

example-2.js

import {CheckerConnectionRunner, HostData} from '@dlabs71/d-connection-checker';

let hosts = [
    HostData.build("ya.ru", 80),
    HostData.build("localhost", 2222)
];

let rejectFunc = (host) => {
    // когда сервис становиться неактивным, вызывается эта функция
};

let checker = new CheckerConnectionRunner(rejectFunc);
checker.setHosts(hosts);
checker.run();
// runner запущен, теперь в цикле будут проверяться все сервисы хранимые в нём. Если сервис недоступен, 
// то у него проставляется статус ERROR и он больше не проверяется, пока статус не измениться вручную

// чтобы остановить цикличную проверку необходимо вызвать метод stop
checker.stop();

Документация

Оглавление

1. Класс HostData

Класс HostData предназначен для описания параметров сервиса IP, порт и служебных параметров, таких как ID и статуса доступности при последней проверке. Это основной класс через который происходит передача данных в функциональные методы данной библиотеки.

Поле Тип Значение по умолчанию Описание
$id String Уникальный идентификатор объекта. Создаётся на основе host и port
$status String READY Статус последней проверки подключения SUCCESS или ERROR
host String IP адрес сервиса
port Number порт сервиса
addedData Object {} Дополнительные данные. Устанавливаются пользователем при необходимости

Данный класс имеет статический метод build, предназначенный для быстрого и удобного создания экземпляра класса. Принимает 2 параметра:

Параметр Тип Обязательность Значение по умолчанию Описание
host String да IP адрес сервиса
port Number да порт сервиса
addedData Number нет {} Дополнительные данные

Пример использования:

import {HostData} from '@dlabs71/d-connection-checker';

let hostData1 = new HostData("localhost", 2222);

let hostData2 = HostData.build("ya.ru", 80);

let hostData3 = HostData.build("ya.ru", 80, {outerId: 123, name: "Yandex"});

2. Класс CheckerConnection

Класс CheckerConnection предназначен для хранения подключений, а также проверки их доступности. Конструктор данного класса принимает следующие параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
logger Console нет console Логгер
defaultRepeat Number нет 3 Количество повторений проверки доступности
pingDefaultTimeout Number нет 8000 timeout ожидания подключения

2.1. Метод checkConnectionByHost

Метод checkConnectionByHost предназначен для проверки доступности сервиса по IP и порту. При отсутствии подключения данный метод пытается ещё несколько раз подключиться, каждый раз уменьшая timeout подключения в двое. Если подключение всё равно остаётся недоступным, то считается что подключение полностью недоступно. Данное поведение можно регулировать при помощи параметров repeat и timeout. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
hostData HostData да Информация о сервисе
repeat Number нет 3 (используется глобальный параметр класса) Количество повторений проверки доступности
timeout Number нет 8000 (используется глобальный параметр класса) timeout ожидания подключения

Пример использования:

import {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';

let host = HostData.build("ya.ru", 80);
let checkerConnection = new CheckerConnection();

checkerConnection.checkConnectionByHost(host)
        .then(() => {
            console.log("CONNECTION SUCCESS");
        })
        .catch((err) => {
            console.log("CONNECTION REFUSE");
        });

2.2. Метод checkConnectionById

Метод checkConnectionById предназначен для проверки доступности сервиса по ID хранимого подключения во встроенном хранилище. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
storeId String да ID подключения в хранилище (параметр $id в HostData)
repeat Number нет 3 (используется глобальный параметр класса) Количество повторений проверки доступности
timeout Number нет 8000 (используется глобальный параметр класса) timeout ожидания подключения

Пример использования:

import {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';

let hosts = [
    HostData.build("ya.ru", 80),
    HostData.build("localhost", 2222),
];
let checkerConnection = new CheckerConnection();
checkerConnection.setHosts(hosts);

checkerConnection.checkConnectionById(hosts[0].$id)
        .then(() => {
            console.log("CONNECTION SUCCESS");
        })
        .catch((err) => {
            console.log("CONNECTION REFUSE");
        });

2.3. Метод checkConnections

Метод checkConnections предназначен для проверки доступности сервисов, которые хранятся в хранилище. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
rejectFunc Function нет (host)=>{} Callback функция, которая будет вызываться когда проверяемое подключение будет недоступным

Пример использования:

import {HostData, CheckerConnection} from '@dlabs71/d-connection-checker';

let hosts = [
    HostData.build("ya.ru", 80),
    HostData.build("localhost", 2222),
];
let rejectFunc = (host) => {
    // когда сервис становиться неактивным, вызывается эта функция
};

let checkerConnection = new CheckerConnection();
checkerConnection.setHosts(hosts);

checkerConnection.checkConnections(rejectFunc)
        .finally(() => {
        });

2.4. Метод setHosts

Метод setHosts предназначен для того, чтобы инициализировать хранилище списком подключений описанных при помощи класса HostData. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
hosts HostData[] да Массив подключений

2.5. Метод addHost

Метод addHost предназначен для того, чтобы добавить в хранилище новое подключение, описанное при помощи класса ** HostData**. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
host HostData да Данные подключения

2.6. Метод removeHost

Метод removeHost предназначен для того, чтобы удалить из хранилища подключение, описанное при помощи класса ** HostData**. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
host HostData да Данные подключения

2.7. Метод getHosts

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

Возвращаемое значение:

Тип Описание
HostData[] Массив подключений

3. Класс CheckerConnectionRunner

Класс CheckerConnectionRunner предназначен для реализации цикличной проверки подключений. Наследует ** CheckerConnection**. Параметры конструктора:

Параметр Тип Обязательность Значение по умолчанию Описание
rejectFunc Function да Callback функция, которая будет вызываться когда проверяемое подключение будет недоступным
logger Console нет console Логгер
defaultRepeat Number нет 3 Количество повторений проверки доступности
pingDefaultTimeout Number нет 8000 timeout ожидания подключения
runTimeout Number нет 4000 timeout ожидания между циклами запуска проверки

3.1. Метод run

Метод run предназначен для того, чтобы запустить циклическую проверку подключений хранимых в хранилище. Параметры:

Параметр Тип Обязательность Значение по умолчанию Описание
timeout Number нет 4000 (используется глобальный параметр класса) timeout ожидания между циклами запуска проверки

3.2. Метод stop

Метод stop предназначен для того, чтобы остановить циклическую проверку подключений хранимых в хранилище.

About

Library for checking connection to a remote service by IP and port

Resources

License

Stars

Watchers

Forks