-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Nexus is an open source messaging server designed to allow communication and synchronization between multiple distributed components.
Written with Go, allows high number of concurrent active connections with good performance.
¡IoT-friendly! The communication protocol is based on JSON-RPC, allowing to be used from a wide range of devices: from servers to low-resource or embedded devices (Arduino, Raspberry Pi...).
Be efficient, don't poll for data, you will receive it when it's available. Nexus is connection oriented and it's backed by RethinkDB, what makes it a good fit for real-time applications.
Multi-node design allows to scale horizontally on-demand just by launching more nodes.
Connections are allowed through TCP, WebSocket and HTTP (with or without SSL).
Clients for multiple languages are maintained by Nexus team. They abstract the JSON-RPC protocol to allow easy development.
- nxgo: Go client
- nxpy: Python client
- nxjs: Javasript transpilation of Go client using GopherJS
- nxjava: Java client
You can find more examples here: https://github.com/oriolf/nexusintro
Developing a client for another language is easy, and some times maybe it's better to use the JSON-RPC protocol directly without a client.
It implements the following objects:
-
tasks
- Send tasks to a path and wait for them to be resolved.
- Get tasks from a path, resolve them and answer with a response or an error.
-
topics
- Subscribe to the paths you are interested to get messages from.
- Publish information to a path and all the subscibers will get a copy from it.
-
pipes
- Create a buffered pipe, pass it to some writers and read from it.
- Receive a pipe and write messages addressed to the reader.
-
locks
- Lock a path if nobody has locked it.
- Unlock a path that you previously locked.
-
users
- Login to start a session on nexus and start using tasks, topics, pipes and locks.
- Create more users or delete them.
- Manage permissions and data associated to users. Use user templates to simplify it.