Пример #1
0
func setupSubscriptions(client *mqtt.Client, wg *sync.WaitGroup) {
	if topicFiltersString != "" {

		wg.Add(numberMessagesExpected)

		topicFilters := strings.Split(topicFiltersString, ",")
		for _, filter := range topicFilters {
			client.Subscribe(filter, qos, func(client *mqtt.Client, msg mqtt.Message) {
				if !msg.Retained() || !ignoreRetained {
					payload := bytes.NewBuffer(msg.Payload()).String()

					if ignorePayload {
						fmt.Printf("r:%v, t:%v, s:%v\n", msg.Retained(), msg.Topic(), len(payload))
					} else {
						infoF("r:%v, t:%v, s:%v", msg.Retained(), msg.Topic(), len(payload))
						fmt.Printf("%v\n", payload)
					}
					wg.Done()
				} else {
					info("ignoring retained msg")
				}
			})
		}

		infoF("waiting for %v msgs.", numberMessagesExpected)
	} else {
		info("No subscriptions...")
	}
}
Пример #2
0
// メッセージを受信する。
func Subscribe(client *MQTT.Client, topic string, qos byte) *SubscribeResult {
	var result *SubscribeResult = &SubscribeResult{}
	result.Count = 0

	var handler MQTT.MessageHandler = func(client *MQTT.Client, msg MQTT.Message) {
		result.Count++
		if Debug {
			fmt.Printf("Received message : topic=%s, message=%s\n", msg.Topic(), msg.Payload())
		}
	}

	token := client.Subscribe(topic, qos, handler)

	if token.Wait() && token.Error() != nil {
		fmt.Printf("Subscribe error: %s\n", token.Error())
	}

	return result
}