@dlabs71/d-connection-checker
v1.0.0
Published
Library for checking connection to a remote service by IP and host
Downloads
7
Maintainers
Readme
D-connection-checker
Библиотека для проверки подключения к удаленному сервису по 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 предназначен для того, чтобы остановить циклическую проверку подключений хранимых в хранилище.