Узел предоставляет богатые сетевые модули программирования
| Узел модуль | протокол |
| сеть | TCP |
| DGRAM | UDP |
| http | Http |
| https | Https |
События службы TCP разделены на следующие две категории
(1) Серверное событие
Для серверов, созданных через net.createserver (), это экземпляр Eventemitter, и есть несколько пользовательских событий:
Прослушивание: запускается после вызова прослушивания () для привязки порта или домена, сокращенного как server.listen (порт, слушатель), проходит через второй параметр.
Соединение: запускается, когда каждый клиент -сокет подключен к серверу. Простой способ состоит в том, чтобы пройти последний параметр через net.createserver ().
Закрыть: запускается, когда сервер закрыт. После вызова Server.close () сервер перестанет принимать новые подключения к сокетам, но сохранит существующие в настоящее время подключения и дождитесь отключения всех подключений, это событие будет запустино.
Ошибка: это событие будет вызвано, когда на сервере произойдет исключение.
(2) Событие подключения
Сервер может одновременно поддерживать соединения с несколькими клиентами, типичным объектом для записи и читаемого потока для каждого соединения. Объекты потока могут использоваться для связи между сервером и клиентом. Они могут читать данные, отправленные с одного конца с одного конца через события данных, или отправлять данные с одного конца на другой конец с помощью метода write ().
Данные: Когда одна побочные вызовы записывают () для отправки данных, другая сторона запустит событие данных. Данные, передаваемые событием, являются данными, отправленными write ().
Конец: это событие будет вызвано, когда любой конец соединения отправляет данные FIN.
Connect: Это событие используется для клиента и будет запущено, когда сокет успешно подключается к серверу.
Дренаж: когда любые конечные вызовы write () для отправки данных, текущий конец запускает событие.
Ошибка: когда исключение отправлено
Закрыть: стрельба, когда гнездо полностью закрыт
Тайм -аут: когда соединение больше не активно активно после определенного периода времени, запускает событие, чтобы уведомить пользователя о том, что соединение простоя.
TCP имеет определенные стратегии оптимизации для небольших пакетов данных в сети: алгоритм Nagle, который запускается только тогда, когда данные достигают определенной суммы.
Услуги UDP
UDP называется протоколом пользовательского пакета, и это не сервис, ориентированный на соединение. UDP в узле - это просто экземпляр EventEmitter, а не экземпляр потока, со следующими пользовательскими событиями:
(1) Сообщение: когда сокет UDP контролирует порт сетевой карты и получает сообщение, данные, переносимые триггером, представляют собой объект буфера сообщений и информация об удаленном адресе.
(2) Слушание: это событие запускается, когда гнездо UDP начинает слушать.
(3) Закрыть: это событие запускается при вызове метода Close (), и событие сообщения больше не запускается. Если событие сообщения нужно снова запустить, его необходимо отменить.
(4) Ошибка: запускается, когда происходит исключение. Если это не слушается, он будет брошен напрямую, что приведет к выходу процесса.
HTTP Service
Модуль HTTP в узле наследует с TCP -сервера (Net Module), который может поддерживать соединение с несколькими клиентами. Поскольку он не создает потоки для каждого соединения и поддерживает очень низкий след памяти, он может достичь высокой параллелистики. Разница между HTTP Service и Service TCP заключается в том, что после включения KeepAlive можно использовать сеанс TCP для нескольких запросов и ответов. Служба TCP используется в качестве устройства для подключения, а служба HTTP используется в качестве устройства для запроса. Модуль HTTP должен инкапсулировать процесс подключения к запросу.
Модуль HTTP абстрагирует чтение и запись сокета, используемого для подключения к объектам ServerRequest и ServerResponse, соответствующие операциям запроса и ответа соответственно.
(1) HTTP -запрос
Для операции чтения подключения TCP модуль HTTP инкапсулирует его как объект ServerRequest. Например, часть заголовка req.method, req.url, req.headers, часть данных системы сообщений абстрагируется в объект потока только для чтения. Если бизнес -логика должна прочитать данные в системе сообщений, поток данных должен быть завершен до выполнения операции.
(2) HTTP -ответ
Ответ HTTP инкапсулирует операцию записи базового соединения, которое можно рассматривать как объект для записи.
Методы информации об информационной информации о ответах пакета: res.setheader () и res.writeheader () методы. Вы можете несколько раз Setheader для настройки, но вы должны позвонить в WriceHeader, чтобы написать в соединение, прежде чем оно вступит в силу.
Частичные методы сообщения: res.write () и res.end () Методы
(3) Событие HTTP Server
Подключение: когда клиент устанавливает соединение TCP с сервером, запускается событие подключения
Запрос: после установления соединения TCP модуль HTTP абстрагирует HTTP -запрос и ответ HTTP из потока данных. Когда данные запроса отправляются на сервер, событие запускается после того, как заголовок HTTP -запроса разрабатывается; После res.end () соединение TCP может использоваться для следующего запроса.
Закрыть: вызов метода Server.Close, чтобы прекратить получение новых подключений, запуская это событие, когда все существующие подключения отключены.
CHECKCONTINUE: Когда некоторые клиенты отправляют более крупные данные, они сначала отправляют запрос с ожиданием: 100-концентрация в заголовке на сервер, а служба запускает событие;
Connect: запускается, когда клиент инициирует запрос Connect
Обновление: когда клиенту требуется обновление протокола соединения, он должен вести переговоры с сервером. Клиент принесет поле Updagrade в заголовке запроса.
ClientError: подключенный клиент отправляет ошибку, и ошибка передается на сервер, а событие запускается.
(4) HTTP -клиент
Модуль HTTP предоставляет http.request (Options, Connect) для построения клиентов HTTP.
Клиент HTTP похож на сервер. В объекте ClientRequest его событие называется ответом. Когда ClientRequest анализирует сообщение ответа, событие ответа будет запускается, как только заголовок ответа будет проанализирован. В то же время для работы передается объект ответа ClientResponse. Последующее ответное сообщение приведено в потоке только для чтения.
(5) HTTP -клиентские события
Ответ: Клиент, соответствующий событию запроса на сервере, запускает событие, когда запрос отвечает после выдачи запроса.
Гребень: запускается, когда соединение, установленное в базовом пуле подключения, назначено текущему объекту запроса;
Connect: Когда клиент отправляет запрос Connect на сервер, если сервер отвечает на 200 кода состояния, клиент запустит событие.
Обновление: когда клиент пользуется запросом обновления, когда клиент наслаждается сервером отправляет запрос на обновление, если сервер отвечает на статус протоколов переключения 101, клиент запустит событие.
Продолжить: после того, как клиент инициирует ожидаемое: информацию о заголовке 100-концентрации на сервер, он пытается отправить более крупные данные. Если сервер отвечает на состояние 100 продолжения, сервер запустит событие
Услуги WebSocket
WebSocket впервые появился в качестве важной особенности HTML5 и имеет следующие преимущества по сравнению с HTTP:
(1) Клиент и сервер устанавливают только TCP -соединение только один раз, и можно использовать меньше подключений
(2) Сервер WebSocket может нажать данные клиенту, что гораздо более гибко и эффективно, чем режим ответа HTTP -запроса
(3) Заголовок протокола более легкого протокола для уменьшения передачи данных
В узле нет встроенного библиотеки, но модуль WS сообщества инкапсулирует базовую реализацию WebSocket, такую как знаменитый сокет.io