N2O: TCP MQTT WebSocket
N2O ist eine einbettbare Nachrichtenprotokoll-Loop-Bibliothek für WebSocket-, HTTP-, MQTT- und TCP-Server. Es bietet grundlegende Funktionen wie Prozessmanagement, virtuelle Knotenringe für die Anforderungsverarbeitung, Sitzungen, Frame-Codierung und eine einheitliche API für externe MQ- und Caching-Dienste.
Kernfunktionen
- Zweck: Hochleistungs-Protokollrelais
- Endpunkte: WebSockets, MQTT, TCP
- Codebasis: 700 LOC (Erlang), 500 LOC (JavaScript)
- Dialysator: REBAR, REBAR3, MAD, MIX
- Hosts: BANDIT, COWBOY, EMQ, MOCHIWEB, RING, TCP, UDP
- PubSub: GPROC, SYN, PG2
- Formatierer: JSON, BERT, ASN.1
Protokollerweiterungen
- Vorlagen: DTL, NITRO
- Abstrakte Datenbankschicht KVS: FS, MNESIA, ROCKSDB, RIAK, REDIS
- Geschäftsprozesse: BPE (BPMN 2.0), SCM, ERP, CRM
- HTTP-API: REST (proplist/JSON)
- AKTIVES Nachladen: GNU/Linux, Windows, macOS
Grundlegende Beispiele
- MQTT-Chat: REVIEW TT (8000)
- WebSocket-Chat: SAMPLE WS (8001)
Unternehmensbeispiele
- Online-Kundenbank: BANK (8041)
- Instant Messaging: CHAT (8042)
- Produktlebenszyklusmanagement: PLM (8043)
Motivation
N2O wurde geschaffen, um Klarheit und Vernunft in die Softwareentwicklung zu bringen. Das Verteilungsmodell erfolgt pro Datei mit ISC-Lizenz.
Kernel
Die Kernmodule bieten einen OTP-Start und einen N2O-Einstiegspunkt.
- n2o – N2O OTP Supervisor und Anwendung
- n2o_pi – N2O-Prozesse
- n2o_proto – N2O-Schleife
- n2o_ring – N2O-Ring
MQTT
Die MQTT-Version ist als RPC-über-MQ-Muster implementiert. Der N2O-Servicemitarbeiter wurde als Ring virtueller Knoten gestartet, auf denen jeweils die N2O-Schleife ausgeführt wird.
- n2o_mqtt – Virtueller N2O MQTT-Knoten
- n2o_auth – N2O-Auth
mad app zero review
cd review
mad dep com pla rep
open http://127.0.0.1:8000
WebSocket
N2O Loop ist direkt verbunden und wird im Kontext des WebSocket-Handlers ausgeführt. Normalerweise verwenden wir in Erlang syn
oder gproc
-OTP-Nachrichtenbusse. Da solche Busse im MQTT-Setup optional sind, fügen wir Bustreiber in das WebSocket-Paket ein.
- n2o_ws – Virtueller N2O WebSocket-Knoten
- n2o_heart – PING-Protokoll
- n2o_cowboy – COWBOY-API
- n2o_gproc – GPROC-Bus-Backend
- n2o_syn – SYN-Bus-Backend
mad app nitro sample
cd sample
mad dep com pla rep
open https://127.0.0.1:8001/app/index.htm
Protokolle
N2O wird mit 3 optionalen Protokollen geliefert.
- n2o_ftp – N2O-Dateiprotokoll
- n2o_heart – N2O Heart-Protokoll
- nitro_n2o – Nitrogen Web Framework-Protokoll
- bpe_n2o – Business Process Engine-Protokoll
Dienstleistungen
Formatierer, Sitzungen usw. Optional.
- n2o_bert – BERT-Encoder/Decoder
- n2o_json – JSON-Encoder/Decoder
- n2o_secret – AES/GCM-256-Encoder/Decoder
- n2o_session – ETS-Sitzungsspeicher
JavaScript
- bert.js – BERT-Encoder/Decoder
- utf8.js – UTF8-Encoder/Decoder
- ieee754.js – IEEE754-Encoder/Decoder
- heart.js – HEART-Protokoll
- ftp.js – FTP-Protokoll
- n2o.js – N2O-Protokollschleife
- mq.js – MQTT-Client
Literatur
- „N2O: Kein Bullshit-Sane-Framework für Wild Web“ PDF (Versionen 0.11–4.4)
- „N2O BOOK Vol.2 Green Book“ HTML (Versionen 4.5–9.11)