Fluux MQTT is a MQTT v3.1.1 client library written in Go.
The library has been tested with the following MQTT servers:
- MQTT v3.1.1, QOS 0
- Client manager to support auto-reconnect with exponential backoff.
- TLS Support
Implement support for QOS 1 and 2 (with storage backend interface and default backends).
You can launch unit tests with:
go test ./...
We encourage you to experiment and test on a public Fluux test server. It is available on mqtt.fluux.io (on ports 1883 for cleartext and 8883 for TLS).
Here is example code for a simple client:
package main
import (
	"log"
	"time"
	"gosrc.io/mqtt"
)
func main() {
	client := mqtt.NewClient("tls://mqtt.fluux.io:8883")
	client.ClientID = "MQTT-Sub"
	log.Printf("Connecting on: %s\n", client.Address)
	messages := make(chan mqtt.Message)
	client.Messages = messages
	postConnect := func(c *mqtt.Client) {
		log.Println("Connected")
		name := "/mremond/test-topic-1"
		topic := mqtt.Topic{Name: name, QOS: 0}
		c.Subscribe(topic)
	}
	cm := mqtt.NewClientManager(client, postConnect)
	cm.Start()
	for m := range messages {
		log.Printf("Received message from MQTT server on topic %s: %+v\n", m.Topic, m.Payload)
	}
}
If you want to test Go MQTT library locally, you can install Mosquitto.
Mosquitto can be installed from homebrew:
brew install mosquitto
...
mosquitto has been installed with a default configuration file.
You can make changes to the configuration by editing:
    /usr/local/etc/mosquitto/mosquitto.conf
To have launchd start mosquitto at login:
  ln -sfv /usr/local/opt/mosquitto/*.plist ~/Library/LaunchAgents
Then to load mosquitto now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mosquitto.plist
Or, if you don't want/need launchctl, you can just run:
  mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
Default config file can be customized in /usr/local/etc/mosquitto/mosquitto.conf.
However, default config file should be ok for testing
You can launch Mosquitto broker with command:
/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
The following command can be use to subscribe a client:
mosquitto_sub -v -t 'test/topic'
You can publish a payload payload on a topic with:
mosquitto_pub -t "test/topic" -m "message payload" -q 1
After you have install official Mosquitto build from main site, you can run the broker with command:
.\mosquitto.exe -v -c .\mosquitto.conf
You can subscribe with:
.\mosquitto_sub.exe -h 127.0.0.1 -v -t 'test/topic'
You can test publish with:
.\mosquitto_pub.exe -h 127.0.0.1 -t "test/topic" -m "message payload" -q 1