1.0.0 • Published 1 year ago

@dlabs71/d-connection-checker v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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 и статуса доступности при последней проверке. Это основной класс через который происходит передача данных в функциональные методы данной библиотеки.

ПолеТипЗначение по умолчаниюОписание
$idStringУникальный идентификатор объекта. Создаётся на основе host и port
$statusStringREADYСтатус последней проверки подключения SUCCESS или ERROR
hostStringIP адрес сервиса
portNumberпорт сервиса
addedDataObject{}Дополнительные данные. Устанавливаются пользователем при необходимости

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

ПараметрТипОбязательностьЗначение по умолчаниюОписание
hostStringдаIP адрес сервиса
portNumberдапорт сервиса
addedDataNumberнет{}Дополнительные данные

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

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 предназначен для хранения подключений, а также проверки их доступности. Конструктор данного класса принимает следующие параметры:

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

2.1. Метод checkConnectionByHost

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

ПараметрТипОбязательностьЗначение по умолчаниюОписание
hostDataHostDataдаИнформация о сервисе
repeatNumberнет3 (используется глобальный параметр класса)Количество повторений проверки доступности
timeoutNumberнет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 хранимого подключения во встроенном хранилище. Параметры:

ПараметрТипОбязательностьЗначение по умолчаниюОписание
storeIdStringдаID подключения в хранилище (параметр $id в HostData)
repeatNumberнет3 (используется глобальный параметр класса)Количество повторений проверки доступности
timeoutNumberнет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 предназначен для проверки доступности сервисов, которые хранятся в хранилище. Параметры:

ПараметрТипОбязательностьЗначение по умолчаниюОписание
rejectFuncFunctionнет(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. Параметры:

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

2.5. Метод addHost

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

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

2.6. Метод removeHost

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

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

2.7. Метод getHosts

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

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

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

3. Класс CheckerConnectionRunner

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

ПараметрТипОбязательностьЗначение по умолчаниюОписание
rejectFuncFunctionдаCallback функция, которая будет вызываться когда проверяемое подключение будет недоступным
loggerConsoleнетconsoleЛоггер
defaultRepeatNumberнет3Количество повторений проверки доступности
pingDefaultTimeoutNumberнет8000timeout ожидания подключения
runTimeoutNumberнет4000timeout ожидания между циклами запуска проверки

3.1. Метод run

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

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

3.2. Метод stop

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