Node.js — Net модуль

314

Від автора: модуль Node js net — це спеціальний модуль, він використовується для створення як серверів і клієнтів. Цей модуль надає асинхронну мережеву оболонку і може бути імпортований з допомогою наступного синтаксису.

var net = require(“net”)

Методи

net.createServer ([options] [, connectionListener]) — Створює новий TCP-сервер. Аргумент connectionListener автоматично встановлюється як слухач події «connection».

net.connect(options[, connectionListener]) — Метод Фабрики, який повертає новий «net.Socket» і підключається до вказаної адреси і порту.

net.createConnection(options[, connectionListener]) — Метод Фабрики, який повертає новий «net.Socket» і підключається до вказаної адреси і порту.

net.connect(port[, host][, connectListener]) — Створює TCP-з’єднання з портом на хостингу. Якщо параметр host вказано, припускається «localhost». Параметр connectListener буде доданий в якості прослушивателя для події «connect». Це метод Фабрики, який повертає новий «net.Socket».

net.createConnection(port[, host][, connectListener]) — Створює TCP-з’єднання з портом на хостингу. Якщо параметр host вказано, припускається «localhost». Параметр connectListener буде доданий в якості прослушивателя для події «connect». Це метод Фабрики, який повертає новий «net.Socket».

net.connect(path[, connectListener]) — Створює підключення сокети Unix до шляху. Параметр connectListener буде доданий в якості прослушивателя для події «connect». Це метод Фабрики, який повертає новий «net.Socket».

net.createConnection (path [, connectListener]) — Створює підключення сокети Unix до шляху. Параметр connectListener буде доданий в якості прослушивателя для події «connect». Це метод Фабрики, який повертає новий «net.Socket».

net.isIP(input) — Перевіряє, чи input IP-адресою. Повертає 0 неприпустимих для рядків, 4 — для адрес IP версії 4 і 6 — для адрес IP версії 6.

net.isIPv4(input) — Повертає true, якщо input є IP-адресою версії 4, інакше повертає false.

net.isIPv6(input) — Повертає true, якщо input є IP-адресою версії 6, інакше повертається false.

Клас — net.Server

Цей клас використовується для створення TCP або локального сервера.

Методи

server.слухати(port[, host][, backlog][, callback]) — Починає приймати з’єднання на зазначеному порту і хості. Якщо параметр host опущений, сервер буде приймати з’єднання, спрямовані на будь-IPv4-адресу (INADDR_ANY). При значенні порту рівному нулю призначається випадковий порт.

server.listen(handle[, callback]) — Запускає локальний сервер сокетів, який прослуховує з’єднання по даному шляху.

server.listen(options[, callback]) — Об’єкт handle може бути заданий і як сервер, і як сокет (в обох випадках з базовим елементом _handle) або як об’єкт {fd: }. Це вказує серверу приймати з’єднання за вказаною дескриптору, але передбачається, що це дескриптор файлу або handle вже прив’язаний до порту або доменному сокету. Прослуховування дескриптора файлу не підтримується в Windows.

server.listen(options[, callback]) — Параметри порту, хоста і бэклогов, а також додаткова функція зворотного виклику ведуть себе так само, як і при виклику server.слухати(port, [host], [backlog], [callback]). Альтернативно, параметр шляху може використовуватися для вказівки сокети UNIX.

server.close([callback]) — Закривається, коли всі з’єднання завершуються, і сервер видає подія ‘close’.

server.address() — Повертає пов’язаний адресу, ім’я сімейства адрес і порт сервера, як їх надає операційна система.

server.unref() — Виклик unref на сервері дозволяє програмі вийти, якщо це єдиний активний сервер в системі подій. Якщо сервер вже не очищений, то новий виклик unref не буде мати ніякого ефекту.

server.ref() — І на противагу попереднім методом, виклик ref на раніше очищеному сервері не дозволить програмі вийти, якщо це єдиний активний сервер (за промовчанням). Якщо сервер пов’язаний, то виклик новий ref не буде мати ніякого ефекту.

server.getConnections(callback) — Асинхронно отримує кількість паралельних зв’язків на сервері. Працює, коли сокети відправляються на форки. Зворотний виклик повинен приймати два аргументи err та count.

Події

listening — Запускається, коли сервер був встановлений після виклику server.listen.

connection — Запускається при створенні нового з’єднання. Об’єкт socket, об’єкт connection доступні для обробника подій. Socket — це екземпляр net.Socket.

close — Запускається при закритті сервера. Зверніть увагу: якщо з’єднання існують, це подія не буде видаватися до тих пір, поки всі з’єднання не будуть завершені.

error — Запускається при виникненні помилки. Подія ‘close’ буде викликатися безпосередньо після цієї події.

Клас — net.Socket

Цей об’єкт є абстрактним поданням TCP або локального сокета. net.Socket реалізує дуплексний інтерфейс Stream. Вони можуть бути створені користувачем і використовуватися як клієнт (за допомогою connect()), або вони можуть бути створені Node і передані користувачеві через подія ‘connection’ сервера.

Події

net.Socket є емітером подій і запускає наступні події.

lookup — Запускається після обробки імені хоста, але до з’єднання. Не застосовно до сокетам UNIX.

connect — Запускається, коли з’єднання сокета успішно встановлено.

data — Запускається при отриманні даних. Дані аргументу являють собою буфер або рядок. Кодування даних встановлюється з допомогою socket.setEncoding().

end — Видається, коли інший кінець сокета відправляє пакет FIN.

timeout — Запускається, якщо сокет простоює через неактивність. Використовується тільки для повідомлення про просте сокета. Користувач повинен вручну закрити з’єднання.

drain — Запускається, коли буфер запису очищається. Може використовуватися для дросельної завантаження.

error — Запускається при виникненні помилки. Подія ‘close’ буде викликатися безпосередньо після цієї події.

close — Запускається після повного закриття сокету. Аргумент has_error є логічним, що вказує, чи був сокет закритий з-за помилки передачі.

Властивості

net.Socket надає безліч важливих властивостей краще контролю взаємодії з сокетами.

socket.bufferSize — Це властивість відображає кількість символів, які зараз буферизуються для запису.

socket.remoteAddress — Рядковий подання віддаленого IP-адреси. Наприклад, «74 .125.127.100» або «2001: 4860: a005 :: 68».

socket.remoteFamily — Рядковий подання віддаленого сімейства IP-адрес. «IPv4» або «IPv6».

socket.remotePort — Числове подання віддаленого порту. Наприклад, 80 або 21.

socket.localAddress — Рядковий подання локального IP-адреси, до якого підключається віддалений клієнт. Наприклад, якщо ви прослуховуєте «0.0.0.0», а клієнт підключається до «192.168.1.1», значення буде «192.168.1.1».

socket.localPort — Числове подання локального порту. Наприклад, 80 або 21.

socket.bytesRead — Кількість прийнятих байтів.

socket.bytesWritten — Кількість відправлених байтів.

Методи

new net.Socket([options]) — Створює новий об’єкт сокета.

socket.connect(port[, host][, connectListener]) — Відкриває з’єднання для цього сокета. Якщо задані port і host, то сокет буде відкритий як сокет TCP, якщо host вказано, припускається localhost. Якщо задано шлях, сокет буде відкритий як сокет Unix для цього шляху.

socket.connect(path[, connectListener]) — Відкриває з’єднання для цього сокета. Якщо задані port і host, то сокет буде відкритий як сокет TCP, якщо host вказано, припускається localhost. Якщо задано шлях, сокет буде відкритий як сокет Unix для цього шляху.

socket.setEncoding([encoding]) — Встановлює кодування сокета як для считываемого потоку.

socket.write(data[, encoding][, callback]) — Відправляє дані в сокет. Другий параметр вказує кодування в разі, якщо це рядкові дані — за замовчуванням використовується кодування UTF8.

socket.end([data][, encoding]) — Наполовину закриває сокет, тобто відправляє пакет FIN. Можливо, що сервер буде продовжувати відправляти деякі дані.

socket.destroy() — Забезпечує, щоб у цьому сокеті не містилося операцій введення-виведення даних. Необхідно тільки в разі помилок (помилка парсинга або подібна).

socket.pause() — Припиняє читання даних. Тобто, події «data» не будуть запускатися. Використовується для дроселювання завантаження.

socket.resume() — Відновлює читання після виклику pause().

socket.setTimeout (timeout [, callback]) — Встановлює для сокета режим Timeout після timeout мілісекунд простою сокета. За замовчуванням net.Socket не встановлюється на Timeout.

socket.setNoDelay ([NODELAY]) — Відключає алгоритм Nagle. За замовчуванням TCP-з’єднання використовують алгоритм Nagle, вони концентрують дані перед відправкою. Значення true для noDelay негайно відключає дані щоразу, коли викликається

socket.write(). За замовчуванням для noDelay задано true.

socket.setKeepAlive ([enable] [, initialDelay]) — Включає/вимикає функцію keep-alive і опціонально встановлює затримку до того моменту, як до простаивающему сокету буде відправлено перший keepalive. Параметр enable за умовчанням встановлено значення false.

socket.address () — Повертає пов’язаний адресу, ім’я сімейства адрес і порт сокета, як вони надаються операційною системою. Повертає об’єкт з трьома властивостями, наприклад { port: 12346, family: ‘IPv4’, address: ‘127.0.0.1’ }.

socket.unref() — Виклик unref в сокеті дозволить програмі вийти, якщо це єдиний активний сокет в системі подій. Якщо сокет вже очищений, тоді новий виклик unref не зробить ніякого впливу.

socket.ref() — В протилежність unref, виклик ref не дозволить програмі завершитися, якщо сокет залишається єдиним активним сокетом (за промовчанням). Якщо сокет вже зв’язаний, то новий виклик ref не зробить ніякого впливу.

Приклад

Створіть файл з ім’ям js server.js з таким кодом:

Файл: server.js

var net = require(‘net’);
var server = net.createServer(function(connection) {
console.log(‘client connected’);
connection.on(‘end’, function() {
console.log(‘client disconnected’);
});
connection.write(‘Hello World!\r\n’);
connection.pipe(connection);
});
server.listen(8080, function() {
console.log(‘server is listening’);
});

Тепер запустіть server.js щоб побачити результат:

$ node server.js

В результаті ви повинні отримати наступний висновок.

server is listening

Створіть js файл з ім’ям client.js з таким кодом:

Файл: client.js

var net = require(‘net’);
var client = net.connect({port: 8080}, function() {
console.log(‘connected to server!’);
});
client.on(‘data’, function(data) {
console.log(data.toString());
client.end();
});
client.on(‘end’, function() {
console.log(‘disconnected from server’);
});

Тепер запустіть client.js з іншого терміналу:

$ node client.js

В результаті ви повинні отримати наступний результат.

connected to server!
Hello World!
disconnected from server

Перевірте висновок на терміналі, на якому виконується server.js.

server is listening
client connected
client disconnected