N2O: TCP MQTT WebSocket
N2O — это встраиваемая библиотека циклов протоколов сообщений для серверов WebSocket, HTTP, MQTT и TCP. Он предоставляет базовые функции, такие как управление процессами, кольцо виртуальных узлов для обработки запросов, сеансы, кодирование кадров и унифицированный API для внешних служб mq и кэширования.
Основные функции
- Назначение: Высокопроизводительное реле протокола.
- Конечные точки: WebSockets, MQTT, TCP.
- Кодовая база: 700 LOC (Erlang), 500 LOC (JavaScript)
- Диализатор: REBAR, REBAR3, MAD, MIX
- Хосты: BANDIT, COWBOY, EMQ, MOCHIWEB, RING, TCP, UDP.
- PubSub: GPROC, SYN, PG2
- Форматеры: JSON, BERT, ASN.1.
Расширения протоколов
- Шаблоны: DTL, NITRO
- Абстрактный уровень базы данных KVS: FS, MNESIA, ROCKSDB, RIAK, REDIS
- Бизнес-процессы: BPE (BPMN 2.0), SCM, ERP, CRM.
- HTTP API: REST (proplist/JSON)
- АКТИВНАЯ перезагрузка: GNU/Linux, Windows, macOS
Базовые образцы
- Чат MQTT: ОБЗОР TT (8000)
- Чат WebSocket: ПРИМЕР WS (8001)
Корпоративные образцы
- Интернет-клиент-банк: БАНК (8041)
- Мгновенные сообщения: ЧАТ (8042)
- Управление жизненным циклом продукта: PLM (8043)
Мотивация
N2O был создан, чтобы внести ясность и разумность в разработку программного обеспечения. Модель распространения — пофайловая, с лицензией ISC.
Ядро
Базовые модули обеспечивают запуск OTP и точку входа N2O.
- n2o — Супервизор и приложение N2O OTP
- n2o_pi — Процессы N2O
- n2o_proto — Цикл N2O
- n2o_ring — Кольцо N2O
MQTT
Версия MQTT реализована как шаблон RPC поверх MQ. Сервисный работник N2O запускается как кольцо виртуальных узлов, каждый из которых запускает цикл N2O.
- n2o_mqtt — виртуальный узел N2O MQTT
- n2o_auth — аутентификация N2O
mad app zero review
cd review
mad dep com pla rep
open http://127.0.0.1:8000
Вебсокет
N2O Loop напрямую подключается и выполняется внутри контекста обработчика WebSocket. Обычно в Erlang мы используем шины сообщений OTP syn
или gproc
. Поскольку такие шины не являются обязательными в настройке MQTT, мы включаем драйверы шин в пакет WebSocket.
- n2o_ws — виртуальный узел N2O WebSocket
- n2o_heart — протокол PING
- n2o_cowboy — КОВБОЙ API
- n2o_gproc — серверная часть шины GPROC
- n2o_syn — серверная часть шины SYN
mad app nitro sample
cd sample
mad dep com pla rep
open https://127.0.0.1:8001/app/index.htm
Протоколы
N2O поставляется с тремя дополнительными протоколами.
- n2o_ftp — файловый протокол N2O
- n2o_heart — протокол N2O Heart
- nitro_n2o — протокол Nitrogen Web Framework
- bpe_n2o — протокол Business Process Engine
Услуги
Форматтеры, сеансы и т. д. Необязательно.
- n2o_bert — кодер/декодер BERT
- n2o_json — кодер/декодер JSON
- n2o_secret — кодер/декодер AES/GCM-256
- n2o_session — хранилище сеансов ETS
JavaScript
- bert.js — кодер/декодер BERT
- utf8.js — кодер/декодер UTF8
- ieee754.js — кодер/декодер IEEE754
- heart.js — протокол HEART
- ftp.js — FTP-протокол
- n2o.js — цикл протокола N2O
- mq.js — MQTT-клиент
Литература
- «N2O: никакой ерунды, разумный фреймворк для дикой паутины» PDF (версии 0.11—4.4)
- HTML «N2O BOOK Vol.2 Зеленая книга» (версии 4.5–9.11)