mqttclient

package
v0.0.0-...-a67a4a9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2022 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultKeepAliveSec = 10

DefaultKeepAliveSec time a keep alive ping is sent. This is the max wait time to discover a broken connection

View Source
const DefaultTimeoutSec = 3

DefaultTimeoutSec constant with connection, reconnection and disconnection timeouts

Variables

This section is empty.

Functions

This section is empty.

Types

type MqttClient

type MqttClient struct {
	// contains filtered or unexported fields
}

MqttClient client wrapper around pahoClient This addresses problems with reconnect and auto resubscribe while using clean session

func NewMqttClient

func NewMqttClient(appID string, caCert *x509.Certificate, timeoutSec int) *MqttClient

NewMqttClient creates a new MQTT messenger instance The clientCertFile and clientKeyFile are optional. If provided then they must be signed by the CA used by the broker, so that the broker can authenticate the client. Leave empty when not using client certificates. See ConnectWithAccessToken or ConnectWithClientCert for the two methods of authentication. To avoid hanging, keep the timeout low, if 0 is provided the default of 3 seconds is used

appID application ID to include in the MQTT client ID
caCert with the x509 CA certificate for validating the server connection
timeoutSec to attempt connecting before it is considered failed. Use 0 for default (3)

func (*MqttClient) Close

func (mqttClient *MqttClient) Close()

Close the connection to the MQTT broker and unsubscribe from all addresss and set device state to disconnected

func (*MqttClient) Connect

func (mqttClient *MqttClient) Connect(hostPort string, username string, accessToken string, clientCert *tls.Certificate) error

Connect to the MQTT broker If a previous connection exists then it is disconnected first. If no connection is possible this keeps retrying until the timeout is expired. With each retry a backoff period is increased until 120 seconds. The clientID is generated as appID-hostname-username-timestamp.

userName to authenticate with. Use plugin ID for certificate
accessToken to authenticate with. Use "" to ignore
clientCert to authenticate with client certificate. Use nil to authenticate with username/access token

func (*MqttClient) ConnectWithAccessToken

func (mqttClient *MqttClient) ConnectWithAccessToken(hostPort string, userName string, accessToken string) error

ConnectWithAccessToken connects to the MQTT broker using an access token for authentication If a previous connection exists then it is disconnected first. If no connection is possible this keeps retrying until the timeout is expired. With each retry a backoff period is increased until 120 seconds.

hostPort with address and port for MQTT password authentication
userName to identify as. Must match access token.
password access token to identify with

func (*MqttClient) ConnectWithClientCert

func (mqttClient *MqttClient) ConnectWithClientCert(hostPort string, clientCert *tls.Certificate) error

ConnectWithClientCert connects to the MQTT broker using client certificate authentication

hostPort with address and port for certificate authentication
clientCert client TLS certificate to authenticate the client with the broker

func (*MqttClient) Publish

func (mqttClient *MqttClient) Publish(topic string, message []byte) error

Publish a message to a topic address

func (*MqttClient) PublishObject

func (mqttClient *MqttClient) PublishObject(topic string, object interface{}) error

PublishObject marshals an object into json and publishes it to the given topic If jsonIndent is provided then the message is formatted nicely for humans

func (*MqttClient) SetPrettyPrint

func (mqttClient *MqttClient) SetPrettyPrint(enable bool)

SetPrettyJson enables/disables pretty-print in marshalling json

func (*MqttClient) Subscribe

func (mqttClient *MqttClient) Subscribe(
	topic string, handler func(address string, message []byte))

Subscribe to a address If a subscription already exists, it is replaced. topic: address to subscribe to. This supports mqtt wildcards such as + and # handler: callback handler.

func (*MqttClient) Unsubscribe

func (mqttClient *MqttClient) Unsubscribe(topic string)

Unsubscribe a topic

type TopicSubscription

type TopicSubscription struct {
	// contains filtered or unexported fields
}

TopicSubscription holds subscriptions to restore after disconnect

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL