Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

lynnplus/go-mqtt

Repository files navigation

go-mqtt

Go Reference GitHub go.mod Go version (subdirectory of monorepo) GitHub tag (with filter) Go Report Card GitHub

go-mqtt is a mqtt golang client that implements the mqttv3 and mqttv5 protocols

Done

  • basic client
  • packet reading and writing
  • publish qos 0
  • subscribe and unsubscribe
  • re-connector

TODO

  • mqttv3 check
  • qos 1 and 2
  • prefix tree based message router
  • event hook

Links

MQTT-v5.0 oasis doc

MQTT-v3.1.1 oasis doc

How to use

get package:

go get github.com/lynnplus/go-mqtt

connect to mqtt broker

package main
import (
	"github.com/lynnplus/go-mqtt"
	"github.com/lynnplus/go-mqtt/packets"
)
func main() {
	client := mqtt.NewClient(&mqtt.ConnDialer{
		Address: "tcp://127.0.0.1:1883",
	}, mqtt.ClientConfig{})
	pkt := packets.NewConnect("client_id", "username", []byte("password"))
	ack, err := client.Connect(context.Background(), pkt)
	if err != nil {
		panic(err)
	}
	if ack.ReasonCode != 0 {
		panic(packets.NewReasonCodeError(ack.ReasonCode, ""))
	}
	//do something
	_ = client.Disconnect()
}

The package provides two connection methods, synchronous and asynchronous. When asynchronous, the response result can only be obtained in the callback.

Asynchronous call connection:

package main
func main() {
	client := mqtt.NewClient(&mqtt.ConnDialer{
		Address: "tcp://127.0.0.1:1883",
	}, mqtt.ClientConfig{
		OnConnected: func(c *mqtt.Client, ack *packets.Connack) {
			fmt.Println(ack.ReasonCode)
		},
	})
	pkt := packets.NewConnect("client_id", "username", []byte("password"))
	err := client.StartConnect(context.Background(), pkt)
}

For a basic chat example please see: https://github.com/lynnplus/go-mqtt/blob/master/examples/chat/main.go

Features

Dialer

The package provides a dialer that implements tcp and tls by default. If the user needs other connection protocol support, such as websocket, the Dialer interface provided in the package can be implemented.

MQTTv5 Enhanced authentication

Re-connect

...

Router

...

About

mqtt client for golang

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /