10 способов проверить подключение к Интернету в Node.js и сохранить связь с вашим кодом

В современном взаимосвязанном мире разработчикам Node.js крайне важно обеспечить надежный доступ своих приложений к Интернету. Независимо от того, создаете ли вы веб-скребок, приложение для чата в реальном времени или API-клиент, возможность проверить подключение к Интернету имеет важное значение. В этой статье блога мы рассмотрим 10 различных методов определения того, подключено ли ваше приложение Node.js к Интернету. Мы рассмотрим как фрагменты кода, так и разговорные пояснения, чтобы вам было проще реализовать эти проверки в ваших проектах.

  1. Использование модуля dns:

    const dns = require('dns');
    dns.lookup('www.google.com', (err) => {
    if (err && err.code === 'ENOTFOUND') {
    console.log('No internet connection!');
    } else {
    console.log('Internet connection is active!');
    }
    });

    Этот метод использует модуль dnsдля выполнения поиска DNS. Если поиск завершается с ошибкой ENOTFOUND, это означает отсутствие подключения к Интернету.

  2. Пинг известная конечная точка:

    const { exec } = require('child_process');
    exec('ping -c 1 google.com', (err) => {
    if (err) {
    console.log('No internet connection!');
    } else {
    console.log('Internet connection is active!');
    }
    });

    Используя функцию execиз модуля child_process, мы можем выполнить команду ping до известной конечной точки, например google.com. Если проверка связи не удалась, это указывает на отсутствие подключения к Интернету.

  3. Проверка подключения сокета:

    const net = require('net');
    const socket = net.createConnection({ port: 80, host: 'google.com' });
    socket.on('connect', () => {
    console.log('Internet connection is active!');
    });
    socket.on('error', () => {
    console.log('No internet connection!');
    });

    В этом методе мы создаем соединение TCP-сокета с указанным хостом и портом. Если соединение установлено успешно, это означает, что Интернет доступен.

  4. Метод HTTP-запроса:

    const http = require('http');
    http.get('http://www.google.com', (res) => {
    console.log('Internet connection is active!');
    }).on('error', () => {
    console.log('No internet connection!');
    });

    Отправляя HTTP-запрос к известной конечной точке, например google.com, мы можем определить, доступен ли Интернет. Если во время запроса возникает ошибка, это означает отсутствие подключения.

  5. Использование библиотеки is-online:

    const isOnline = require('is-online');
    isOnline().then((online) => {
    if (online) {
    console.log('Internet connection is active!');
    } else {
    console.log('No internet connection!');
    }
    });

    Библиотека is-onlineпредоставляет простой и удобный способ проверки подключения к Интернету, возвращая логическое значение, указывающее статус.

  6. Проверка подключения к Интернету с помощью request:

    const request = require('request');
    request('http://www.google.com', (err, res) => {
    if (err) {
    console.log('No internet connection!');
    } else {
    console.log('Internet connection is active!');
    }
    });

    Используя библиотеку request, мы можем отправить HTTP-запрос к указанной конечной точке. Если возникает ошибка, это говорит об отсутствии подключения к Интернету.

  7. Проверка IP-адреса:

    const ping = require('ping');
    ping.sys.probe('8.8.8.8', (isAlive) => {
    if (isAlive) {
    console.log('Internet connection is active!');
    } else {
    console.log('No internet connection!');
    }
    });

    Библиотека pingпозволяет нам напрямую проверять IP-адрес. Если IP-адрес отвечает, это означает, что есть подключение к Интернету.

  8. Использование модуля http-status-codes:

    const httpStatus = require('http-status-codes');
    httpStatus.getStatusText(200);  // Returns 'OK' if the internet is accessible

    Используя модуль http-status-codes, мы можем проверить текст статуса, соответствующий заданному коду состояния HTTP. Если он возвращает «ОК» для 200, это указывает на активное подключение к Интернету.

  9. Проверка состояния сетевого интерфейса:

    const os = require('os');
    const interfaces = os.networkInterfaces();
    const isConnected = Object.values(interfaces).some((iface) =>
    iface.some((connection) => connection.family === 'IPv4' && !connection.internal)
    );
    if (isConnected) {
    console.log('Internet connection is active!');
    } else {
    console.log('No internet connection!');
    }

    Этот метод использует модуль osдля получения информации о сетевых интерфейсах в системе. Проверяя активные соединения IPv4, которые не являются внутренними, мы можем определить, есть ли подключение к Интернету.

  10. Использование библиотеки connectivity:

    const connectivity = require('connectivity');
    connectivity((online) => {
    if (online) {
    console.log('Internet connection is active!');
    } else {
    console.log('No internet connection!');
    }
    });

    Библиотека connectivityпредоставляет кроссплатформенное решение для проверки подключения к Интернету, возвращая логическое значение, указывающее статус.

В этой статье мы рассмотрели 10 различных методов проверки подключения к Интернету в Node.js. От использования таких модулей, как dnsи net, до выполнения системных команд и выполнения HTTP-запросов — эти подходы предлагают множество вариантов, обеспечивающих постоянную связь вашего кода. Внедрив эти проверки в свои проекты Node.js, вы сможете справиться со сценариями, в которых подключение к Интернету имеет важное значение.

Помните, что поддержание надежного подключения к Интернету имеет решающее значение для многих приложений, и эти методы помогут вам создать надежные приложения, которые корректно решают проблемы с подключением. Так что вперед, выбирайте метод, который соответствует вашим требованиям, и сохраняйте свой код Node.js подключенным к огромному миру Интернета!