N2O: TCP MQTT WebSocket
N2O是一个可嵌入的消息协议循环库,适用于WebSocket、HTTP、MQTT和TCP服务器。它提供了基本功能,如进程管理、用于请求处理的虚拟节点环、会话、帧编码,以及统一的外部消息队列和缓存服务API。
核心特性
- 目的:高性能协议中继
- 终端:WebSockets、MQTT、TCP
- 代码库:700行(Erlang),500行(JavaScript)
- 类型检查器:REBAR、REBAR3、MAD、MIX
- 主机: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)
- ACTIVE重载:GNU/Linux、Windows、macOS
基础示例
企业示例
动机
N2O的创建旨在为软件开发带来清晰度和理性。其分发模式基于单文件,采用ISC许可证。
内核
核心模块提供OTP启动和N2O入口点。
MQTT
MQTT版本实现为MQ模式上的RPC。N2O服务工作者作为虚拟节点环启动,每个节点运行N2O循环。
mad app zero review
cd review
mad dep com pla rep
open http://127.0.0.1:8000
WebSocket
N2O 循环直接连接并在 WebSocket 处理程序的上下文中运行。通常在 Erlang 中,我们使用 syn
或 gproc
OTP 消息总线。由于这些总线在 MQTT 设置中是可选的,我们将总线驱动程序包含在 WebSocket 包中。
- n2o_ws — N2O WebSocket 虚拟节点
- n2o_heart — PING 协议
- n2o_cowboy — 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_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 客户端