N2O:TCP MQTT WebSocket
N2O 是一个用于 WebSocket、HTTP、MQTT 和 TCP 服务器的嵌入式消息协议循环库。它提供了基本功能,例如进程管理、用于请求处理的虚拟节点环、会话、帧编码以及用于外部 mq 和缓存服务的统一 API。
核心特点
- 用途:高性能协议中继
- 端点:WebSockets、MQTT、TCP
- 代码库:700 LOC (Erlang)、500 LOC (JavaScript)
- 透析器:REBAR、REBAR3、MAD、MIX
- 主机:BANDIT、COWBOY、EMQ、MOCHIWEB、RING、TCP、UDP
- 发布订阅: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 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
WebSocket
N2O Loop 直接连接并在 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)