# MQTT Go Client library
Eclipse Paho MQTT Go Client (opens new window) is the Go language client library under the Eclipse Paho project, which can connect to the MQTT Broker to publish messages, subscribe to topics and receive the published message. It supports asynchronous operation mode completely.
The client depends on Google's software Package of proxy (opens new window) and websockets (opens new window), which can be installed with the following command:
go get github.com/eclipse/paho.mqtt.golang
Copied!
1
# MQTT Go usage example
This example contains the complete code for Paho MQTT in Go language connecting to EMQX Broker, sending and receiving messages:
package main import ( "fmt" "log" "os" "time" "github.com/eclipse/paho.mqtt.golang" ) var f mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { fmt.Printf("TOPIC: %s\n", msg.Topic()) fmt.Printf("MSG: %s\n", msg.Payload()) } func main() { mqtt.DEBUG = log.New(os.Stdout, "", 0) mqtt.ERROR = log.New(os.Stdout, "", 0) opts := mqtt.NewClientOptions().AddBroker("tcp://broker.emqx.io:1883").SetClientID("emqx_test_client") opts.SetKeepAlive(60 * time.Second) // Set the message callback handler opts.SetDefaultPublishHandler(f) opts.SetPingTimeout(1 * time.Second) c := mqtt.NewClient(opts) if token := c.Connect(); token.Wait() && token.Error() != nil { panic(token.Error()) } // Subscribe to a topic if token := c.Subscribe("testtopic/#", 0, nil); token.Wait() && token.Error() != nil { fmt.Println(token.Error()) os.Exit(1) } // Publish a message token := c.Publish("testtopic/1", 0, false, "Hello World") token.Wait() time.Sleep(6 * time.Second) // Unscribe if token := c.Unsubscribe("testtopic/#"); token.Wait() && token.Error() != nil { fmt.Println(token.Error()) os.Exit(1) } // Disconnect c.Disconnect(250) time.Sleep(1 * time.Second) }
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Paho Golang MQTT 5.0 support
MQTT 5.0 support can refer to eclipse/paho.golang (opens new window)
What’s on this page