N2O: TCP MQTT WebSocket
N2O は、WebSocket、HTTP、MQTT、および TCP サーバー用の組み込み可能なメッセージ プロトコル ループ ライブラリです。プロセス管理、リクエスト処理用の仮想ノード リング、セッション、フレーム エンコーディング、外部 mq およびキャッシュ サービス用の統合 API などの基本機能を提供します。
コア機能
- 目的: 高性能プロトコルリレー
- エンドポイント: WebSocket、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)
エンタープライズサンプル
- オンライン顧客銀行: BANK (8041)
- インスタント メッセージング: チャット (8042)
- 製品ライフサイクル管理: PLM (8043)
モチベーション
N2O は、ソフトウェア開発に明確さと健全性をもたらすために作成されました。配布モデルは、ISC ライセンスを使用したファイル単位です。
カーネル
コア モジュールは、OTP 開始および N2O エントリ ポイントを提供します。
- n2o — N2O OTP スーパーバイザおよびアプリケーション
- n2o_pi — N2O プロセス
- n2o_proto — N2O ループ
- n2o_ring — N2O リング
MQTT
MQTT バージョンは RPC over 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 ループは直接接続され、WebSocket ハンドラーのコンテキスト内で実行されます。通常、Erlang ではsyn
またはgproc
OTP メッセージ バスを使用します。このようなバスは 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 には 3 つのオプションのプロトコルが付属しています。
- n2o_ftp — N2O ファイルプロトコル
- n2o_heart — N2O ハートプロトコル
- nitro_n2o — Nitrogen Web フレームワーク プロトコル
- bpe_n2o — ビジネス プロセス エンジン プロトコル
サービス
フォーマッタ、セッションなど。オプション。
- 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)
- 「N2O BOOK Vol.2 グリーンブック」HTML(バージョン4.5~9.11)