mqtt

package
v1.17.0 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2024 License: Apache-2.0 Imports: 19 Imported by: 2

Documentation

Index

Constants

View Source
const UploadTopic = "SYS/dis/upload_records"

Variables

View Source
var (
	// MQTTHub client
	MQTTHub *Client
	// GroupID stands for group id
	GroupID string
	// ConnectedTopic to send connect event
	ConnectedTopic = "$hw/events/connected/%s"
	// DisconnectedTopic to send disconnect event
	DisconnectedTopic = "$hw/events/disconnected/%s"
	// MemberGet to get membership device
	MemberGet = "$hw/events/edgeGroup/%s/membership/get"
	// MemberGetRes to get membership device
	MemberGetRes = "$hw/events/edgeGroup/%s/membership/get/result"
	// MemberDetail which edge-client should be pub when service start
	MemberDetail = "$hw/events/edgeGroup/%s/membership/detail"
	// MemberDetailRes MemberDetail topic resp
	MemberDetailRes = "$hw/events/edgeGroup/%s/membership/detail/result"
	// MemberUpdate updating of the twin
	MemberUpdate = "$hw/events/edgeGroup/%s/membership/updated"
	// GroupUpdate updates a edgegroup
	GroupUpdate = "$hw/events/edgeGroup/%s/updated"
	// GroupAuthGet get temperary aksk from cloudhub
	GroupAuthGet = "$hw/events/edgeGroup/%s/authInfo/get"
	// GroupAuthGetRes temperary aksk from cloudhub
	GroupAuthGetRes = "$hw/events/edgeGroup/%s/authInfo/get/result"
	// SubTopics which edge-client should be sub
	SubTopics = []string{
		"$hw/events/upload/#",
		"$hw/events/device/+/+/state/update",
		"$hw/events/device/+/+/twin/+",
		"$hw/events/node/+/membership/get",
		UploadTopic,
		"+/user/#",
	}
)

Functions

func OnSubMessageReceived

func OnSubMessageReceived(client MQTT.Client, msg MQTT.Message)

OnSubMessageReceived msg received callback

func RegisterMsgHandler added in v1.11.0

func RegisterMsgHandler()

RegisterMsgHandler register handler for message if topic is matched in pattern for "$hw/events/device/+/twin/+", "$hw/events/node/+/membership/get", send to twin for other, send to hub for "SYS/dis/upload_records", no need to base64 topic

Types

type AccessInfo

type AccessInfo struct {
	Name    string `json:"name"`
	Type    string `json:"type"`
	Topic   string `json:"topic"`
	Content []byte `json:"content"`
}

AccessInfo that deliver between edge-hub and cloud-hub

type Client

type Client struct {
	MQTTUrl     string
	PubClientID string
	SubClientID string
	Username    string
	Password    string
	PubCli      MQTT.Client
	SubCli      MQTT.Client
}

Client struct

func (*Client) InitPubClient

func (mq *Client) InitPubClient()

InitPubClient init pub client

func (*Client) InitSubClient

func (mq *Client) InitSubClient()

InitSubClient init sub client

type HandlerFunc added in v1.11.0

type HandlerFunc func(topic string, payload []byte)

type MessageExpression added in v1.11.0

type MessageExpression struct {
	Matcher  *regexp.Regexp
	VarNames []string
	VarCount int
}

MessageExpression message expression

func NewExpression added in v1.11.0

func NewExpression() *MessageExpression

NewExpression new expression

func (*MessageExpression) GetExpression added in v1.11.0

func (exp *MessageExpression) GetExpression(topic string) *MessageExpression

GetExpression get expression

type MessageMux added in v1.11.0

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

MessageMux message mux

func NewMessageMux added in v1.11.0

func NewMessageMux() *MessageMux

NewMessageMux new message mux

func (*MessageMux) Dispatch added in v1.11.0

func (mux *MessageMux) Dispatch(topic string, payload []byte)

func (*MessageMux) Entry added in v1.11.0

func (mux *MessageMux) Entry(pattern *MessagePattern, handle func(topic string, payload []byte)) *MessageMux

Entry mux := NewMessageMux(ctx, module) mux.Entry(NewPattern(res).Op(opr), handle))

type MessageMuxEntry added in v1.11.0

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

MessageMuxEntry message mux entry

func NewEntry added in v1.11.0

func NewEntry(pattern *MessagePattern, handle func(topic string, payload []byte)) *MessageMuxEntry

NewEntry new entry

type MessagePattern added in v1.11.0

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

MessagePattern message pattern

func NewPattern added in v1.11.0

func NewPattern(resource string) *MessagePattern

NewPattern new pattern

func (*MessagePattern) Match added in v1.11.0

func (pattern *MessagePattern) Match(topic string) bool

Match /path/{param}/sub

type Server

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

Server serve as an internal mqtt broker.

func NewMqttServer

func NewMqttServer(sqz int, url string, retain bool, qos int) *Server

NewMqttServer create an internal mqtt server.

func (*Server) InitInternalTopics

func (m *Server) InitInternalTopics()

InitInternalTopics sets internal topics to server by default.

func (*Server) Publish

func (m *Server) Publish(topic string, payload []byte)

Publish will dispatch topic msg to its subscribers directly.

func (*Server) RemoveTopic added in v1.5.0

func (m *Server) RemoveTopic(topic string)

RemoveTopic remove the topic from internal mqtt broker.

func (*Server) Run

func (m *Server) Run() error

Run launch a server and accept connections.

func (*Server) SetTopic

func (m *Server) SetTopic(topic string)

SetTopic set the topic to internal mqtt broker.

Jump to

Keyboard shortcuts

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