Embeddable message protocol loop library for WebSocket, HTTP, MQTT, and TCP servers with unified API.
N2O is an embeddable message protocol loop library that provides a unified foundation for building distributed applications over WebSocket, HTTP, MQTT, and TCP. It handles core concerns like process management, virtual node rings, sessions, and frame encoding, enabling high‑performance protocol relay with minimal code.
Erlang/Elixir developers building real‑time, distributed systems such as chat applications, IoT platforms, or enterprise backends that require WebSocket, MQTT, or TCP communication.
Developers choose N2O for its lightweight, embeddable design, extensive protocol support, and unified API that simplifies integrating multiple messaging and caching services while maintaining high performance and clarity in distributed architectures.
⭕ N2O: Distributed WebSocket Application Server ISO 20922
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
With only 700 lines of Erlang and 500 lines of JavaScript, N2O provides a lightweight foundation for protocol handling, reducing bloat and maintenance overhead.
Includes optional protocols like FTP for file transfer and BPE for BPMN 2.0 integration, allowing customization for diverse real-time and enterprise use cases.
Offers consistent interfaces for formatters (BERT, JSON), session management, and encryption, with support for multiple pub-sub backends like GPROC and SYN, simplifying integration.
Runs on various Erlang/Elixir servers including COWBOY, BANDIT, and EMQ, making it adaptable to different deployment environments without vendor lock-in.
Tightly coupled to the Erlang/Elixir ecosystem, making it inaccessible for teams using other programming languages and limiting its broader adoption.
Key documentation is hosted on external sites (e.g., ws.n2o.dev), leading to a disjointed learning experience and increased effort for troubleshooting and setup.
Being embeddable and modular, configuring N2O involves setting up multiple components and protocols, which can be cumbersome for rapid prototyping or simple projects.