Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oimyounis/gott
An MQTT Broker written in pure Go with an easy to implement plugin interface.
https://github.com/oimyounis/gott
broker go golang gott high-performance mqtt mqtt-broker plugins real-time realtime-messaging websockets
Last synced: 3 months ago
JSON representation
An MQTT Broker written in pure Go with an easy to implement plugin interface.
- Host: GitHub
- URL: https://github.com/oimyounis/gott
- Owner: oimyounis
- License: apache-2.0
- Created: 2019-12-16T19:10:34.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-03T15:52:36.000Z (over 3 years ago)
- Last Synced: 2024-09-29T20:45:27.735Z (4 months ago)
- Topics: broker, go, golang, gott, high-performance, mqtt, mqtt-broker, plugins, real-time, realtime-messaging, websockets
- Language: Go
- Homepage:
- Size: 415 KB
- Stars: 8
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
An MQTT Broker written in pure Go. Aims to be a high-performance, easy-to-use pluggable broker with most of the features that could be embedded in a broker available out of the box (either embedded in the Broker itself or as plugins) at no cost.
**Hopefully with your contribution we could build something great!**## Project Status
### In BETA
- GOTT is currently in a BETA stage. All planned features fully work as tested while developed. Still, there is room for improvement as more tests and optimizations are needed.### Planned for v1 (MQTT v3.1.1)
- [x] Ping (client -> server)
- [x] Topic filtering with wildcards support
- [x] Subscriptions
- [x] QoS 0 messages
- [x] QoS 1 messages
- [x] QoS 2 messages
- [x] Retained messages
- [x] Will messages
- [x] Sessions
- [x] Plugins
- [x] Logging to disk (with levels and log rotation)
- [x] TLS/SSL
- [x] WebSockets### Planned for v2
- [ ] MQTT v5
- [ ] Clustering### Known Issues
- Restarting the broker will reset existing subscriptions. They are not saved to disk (sessions are saved to disk but subscriptions are not restored on broker restart).## Quick Start
1. Install dependencies:
```shell script
$ go get github.com/google/uuid
$ go get github.com/dgraph-io/badger
$ go get github.com/json-iterator/go
$ go get go.uber.org/zap
$ go get gopkg.in/natefinch/lumberjack.v2
$ go get gopkg.in/yaml.v2
$ go get github.com/gorilla/websocket
```
2. Clone/download this repo and place it in $GOPATH/src.
3. Run `cd main` inside the project's directory.
4. Run `go run main.go`.
Alternatively, you can download and run the [install script](_docs/scripts/install-gott.sh) that will handle dependency installation and repo cloning for you.## Plugins
GOTT implements a plugin system that is very easy to work with. You can easily build your own plugin that does whatever you want.
Start by reading the [plugins documentation](_docs/plugins/plugins.md).## License
Apache License 2.0, see [LICENSE](LICENSE).## Contribution
You are very welcome to submit a new feature, fix a bug, an optimization to the code, report a bug or even a benchmark would be helpful.
### To Contribute:
Open an issue or:
1. Fork this repo.
2. Create a new branch with a descriptive name (example: *feature/some-new-function* or *fix/something-somewhere*).
3. Commit and push your code to your new branch.
4. Create a new Pull Request here.