npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@dlabs71/d-connection-checker

v1.0.0

Published

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

Downloads

7

Readme

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