本文整理汇总了Golang中git/eclipse/org/gitroot/paho/org/eclipse/paho/mqtt/golang/git.MqttClient.StartSubscription方法的典型用法代码示例。如果您正苦于以下问题:Golang MqttClient.StartSubscription方法的具体用法?Golang MqttClient.StartSubscription怎么用?Golang MqttClient.StartSubscription使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类git/eclipse/org/gitroot/paho/org/eclipse/paho/mqtt/golang/git.MqttClient
的用法示例。
在下文中一共展示了MqttClient.StartSubscription方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Subscribe
func Subscribe(client *MQTT.MqttClient, topic string) {
filter, _ := MQTT.NewTopicFilter(topic, byte(MQTT.QOS_ZERO))
if receipt, err := client.StartSubscription(f, filter); err != nil {
fmt.Println(err)
os.Exit(1)
} else {
<-receipt
}
}
示例2: Subscribe
func Subscribe(client *MQTT.MqttClient, topic string) error {
topicName := config.user + "/" + topic
// 無料枠はQoS 0のみ
qos := 0
// Subscribeするtopicを設定します
topicFilter, err := MQTT.NewTopicFilter(topicName, byte(qos))
if err != nil {
return err
}
// Subscribeします
// onMessageReceived はメッセージが届いたら呼び出されるコールバックです
_, err = client.StartSubscription(onMessageReceived, topicFilter)
if err != nil {
return err
}
// そのままではプロセスが終わってしまいますので、待ち受けます
for {
time.Sleep(1 * time.Second)
}
}
示例3: mainLoop
//.........这里部分代码省略.........
break
} else {
total++
}
// At least one output ports are opened
if total >= 1 && waitCh != nil {
waitCh <- true
}
}
}()
log.Println("Waiting for options to arrive...")
var (
ip [][]byte
clientOptions *mqtt.ClientOptions
client *mqtt.MqttClient
defaultTopic string
qos mqtt.QoS
)
// Setup socket poll items
poller := zmq.NewPoller()
poller.Add(optsPort, zmq.POLLIN)
poller.Add(tmplPort, zmq.POLLIN)
for {
sockets, err := poller.Poll(-1)
if err != nil {
log.Println("Error polling ports:", err.Error())
continue
}
for _, socket := range sockets {
if socket.Socket == nil {
log.Println("ERROR: could not find socket in polling items array")
continue
}
ip, err = socket.Socket.RecvMessageBytes(0)
if err != nil {
log.Println("Error receiving message:", err.Error())
continue
}
if !runtime.IsValidIP(ip) || !runtime.IsPacket(ip) {
log.Println("Invalid IP:", ip)
continue
}
switch socket.Socket {
case optsPort:
err = json.Unmarshal(ip[1], &options)
if err != nil {
log.Println("ERROR: failed to unmarshal options:", err.Error())
continue
}
clientOptions, defaultTopic, qos, err = helper.ParseOptionsURI(options.OptionsURI)
if err != nil {
log.Printf("Failed to parse connection uri. Error: %s", err.Error())
continue
}
log.Println("Options specified:", options)
case tmplPort:
err = json.Unmarshal(ip[1], &propTemplate)
if err != nil {
log.Println("ERROR: failed to unmarshal template:", err.Error())
continue
}
log.Printf("Template specified: %+v", propTemplate)
default:
log.Println("ERROR: IP from unhandled socket received!")
continue
}
if defaultTopic != "" && clientOptions != nil && propTemplate != nil {
log.Println("Component configured. Moving on...")
break
}
}
client = mqtt.NewClient(clientOptions)
if _, err = client.Start(); err != nil {
log.Printf("Failed to create MQTT client. Error: %s", err.Error())
continue
}
defer client.Disconnect(1e6)
optsPort.Close()
tmplPort.Close()
break
}
log.Println("Started...")
topicFilter, err := mqtt.NewTopicFilter(defaultTopic, byte(qos))
utils.AssertError(err)
_, err = client.StartSubscription(messageHandler, topicFilter)
utils.AssertError(err)
ticker := time.Tick(1 * time.Second)
for _ = range ticker {
}
}