yjp преди 1 година
родител
ревизия
9be97d7d0b
променени са 3 файла, в които са добавени 12 реда и са изтрити 7 реда
  1. 2 3
      mqtt_binding/mqtt_binding.go
  2. 7 1
      mqtt_binding/mqtt_init.go
  3. 3 3
      mqtt_binding_test.go

+ 2 - 3
mqtt_binding/mqtt_binding.go

@@ -18,10 +18,9 @@ type Binding struct {
 
 // NewBinding 创建版本对应的binding
 func NewBinding(apiVersion string, handlers ...router.Handler) *Binding {
-	var group string
-
+	group := topicPrefix
 	if utils.IsStringNotEmpty(apiVersion) && apiVersion != "root" {
-		group = apiVersion
+		group += "/" + apiVersion
 	}
 
 	r := mqttClientInstance.GetRouter(group, handlers)

+ 7 - 1
mqtt_binding/mqtt_init.go

@@ -4,9 +4,15 @@ import (
 	"git.sxidc.com/go-tools/api_binding/mqtt_binding/mqtt_client"
 )
 
+var (
+	topicPrefix string
+)
+
 var mqttClientInstance *mqtt_client.MqttClient
 
-func Init(opts *mqtt_client.MqttClientOptions) error {
+func Init(prefix string, opts *mqtt_client.MqttClientOptions) error {
+	topicPrefix = prefix
+
 	mqttClient, err := mqtt_client.NewMqttClient(opts)
 	if err != nil {
 		return err

+ 3 - 3
mqtt_binding_test.go

@@ -14,7 +14,7 @@ import (
 )
 
 func TestMqttBinding(t *testing.T) {
-	err := mqtt_binding.Init(&mqtt_client.MqttClientOptions{
+	err := mqtt_binding.Init("test_prefix", &mqtt_client.MqttClientOptions{
 		UserName:       "admin",
 		Password:       "mtyzxhc",
 		Address:        "tcp://127.0.0.1:1883",
@@ -68,7 +68,7 @@ func TestMqttBinding(t *testing.T) {
 			SetPingTimeout(5).
 			SetWill("test-client/will", "dead", 2, true).
 			SetOnConnectHandler(func(client mqtt.Client) {
-				token := client.Subscribe("test/test-topic/reply", 2, func(client mqtt.Client, message mqtt.Message) {
+				token := client.Subscribe("test_prefix/test/test-topic/reply", 2, func(client mqtt.Client, message mqtt.Message) {
 					respMap := make(map[string]interface{})
 					err = json.Unmarshal(message.Payload(), &respMap)
 					if err != nil {
@@ -102,7 +102,7 @@ func TestMqttBinding(t *testing.T) {
 					return
 				}
 
-				token = client.Publish("test/test-topic", 2, false, sendJson)
+				token = client.Publish("test_prefix/test/test-topic", 2, false, sendJson)
 				if token.Wait(); token.Error() != nil {
 					fmt.Println(token.Error())
 					return