Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/c16a/hermes
Tiny MQTT broker written in Go
https://github.com/c16a/hermes
broker hermes mqtt
Last synced: about 1 month ago
JSON representation
Tiny MQTT broker written in Go
- Host: GitHub
- URL: https://github.com/c16a/hermes
- Owner: c16a
- License: mit
- Archived: true
- Created: 2020-12-23T12:45:24.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-07T05:35:02.000Z (7 months ago)
- Last Synced: 2024-09-18T16:41:20.688Z (about 2 months ago)
- Topics: broker, hermes, mqtt
- Language: Go
- Homepage: https://c16a.github.io/hermes
- Size: 1020 KB
- Stars: 60
- Watchers: 5
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome_go_article - Go 语言版的简易 MQTT broker 库
README
# Hermes
Hermes is a tiny MQTT compatible broker written in Go.
[![Go Workflow Status](https://github.com/c16a/hermes/workflows/Go/badge.svg)](https://github.com/c16a/hermes/workflows/Go/badge.svg)
[![CodeQL Workflow Status](https://github.com/c16a/hermes/workflows/CodeQL/badge.svg)](https://github.com/c16a/hermes/workflows/CodeQL/badge.svg)
[![Go Report Card](https://goreportcard.com/badge/github.com/c16a/hermes)](https://goreportcard.com/report/github.com/c16a/hermes)
[![Total alerts](https://img.shields.io/lgtm/alerts/g/c16a/hermes.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/c16a/hermes/alerts/)
The goals of the project are as below
- Easy to compile, and run
- Tiny footprint
- Extensible
- Adhering to standards## Current features
This is in no way ready to be consumed. This is a project which arose out of my boredom during COVID-19, and general
issues whilst working with other production ready brokers such as ActiveMQ, Solace, NATS etc.- [x] CONNECT
- [x] PUBLISH, PUBACK
- [x] SUBSCRIBE, SUBACK
- [x] DISCONNECT
- [x] Persistent sessions
- [x] QoS 2 support
- [x] Offline messages
- [ ] Wildcard subscriptions
- [ ] Shared Subscriptions
- [ ] Extended authentication
- [ ] MQTT over WebSocket
- [ ] Clustering## Usage
Any compatible MQTT client library can be used to interact with the broker
- Java ([eclipse/paho.mqtt.java](https://github.com/eclipse/paho.mqtt.java))
- Go ([eclipse/paho.golang](https://github.com/eclipse/paho.golang))
- Other clients can be found [here](https://github.com/eclipse?q=paho&type=&language=)## Planned features
The following are some features from the top of my head which I will work on
- Support for more transports such as WebSocket, gRPC, Rsocket(?)
- Support for clustering
- Authentication & extensible middleware
- Message Persistence## Contributing
Fork it, give it a spin, and let me know!