diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..a2c7110 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/go_mqtt_base/.idea/.gitignore b/go_mqtt_base/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/go_mqtt_base/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/go_mqtt_base/.idea/go_mqtt_base.iml b/go_mqtt_base/.idea/go_mqtt_base.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/go_mqtt_base/.idea/go_mqtt_base.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/go_mqtt_base/.idea/modules.xml b/go_mqtt_base/.idea/modules.xml new file mode 100644 index 0000000..9612777 --- /dev/null +++ b/go_mqtt_base/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/go_mqtt_base/.idea/vcs.xml b/go_mqtt_base/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/go_mqtt_base/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/go_mqtt_base/go.mod b/go_mqtt_base/go.mod new file mode 100644 index 0000000..dc337b0 --- /dev/null +++ b/go_mqtt_base/go.mod @@ -0,0 +1,11 @@ +module go_mqtt_base + +go 1.19 + +require github.com/eclipse/paho.mqtt.golang v1.4.2 + +require ( + github.com/gorilla/websocket v1.4.2 // indirect + golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect +) diff --git a/go_mqtt_base/go.sum b/go_mqtt_base/go.sum new file mode 100644 index 0000000..ddd8ce6 --- /dev/null +++ b/go_mqtt_base/go.sum @@ -0,0 +1,12 @@ +github.com/eclipse/paho.mqtt.golang v1.4.2 h1:66wOzfUHSSI1zamx7jR6yMEI5EuHnT1G6rNA5PM12m4= +github.com/eclipse/paho.mqtt.golang v1.4.2/go.mod h1:JGt0RsEwEX+Xa/agj90YJ9d9DH2b7upDZMK9HRbFvCA= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U= +golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/go_mqtt_base/go_mqtt_base b/go_mqtt_base/go_mqtt_base new file mode 100755 index 0000000..0c283c2 Binary files /dev/null and b/go_mqtt_base/go_mqtt_base differ diff --git a/go_mqtt_base/main.go b/go_mqtt_base/main.go new file mode 100644 index 0000000..292d7ee --- /dev/null +++ b/go_mqtt_base/main.go @@ -0,0 +1,77 @@ +package main + +import ( + "fmt" + mqtt "github.com/eclipse/paho.mqtt.golang" + "time" +) + +func timing(client mqtt.Client) { + //定时器,10秒钟执行一次 + ticker := time.NewTicker(5 * time.Second) + for { + time := <-ticker.C + fmt.Println("定时器====>", time.String()) + if !client.IsConnectionOpen() { + client.Connect() + } else { + fmt.Println("client has connect") + } + } +} + +var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { + fmt.Printf("Received message: %s from topic: %s\n", msg.Payload(), msg.Topic()) +} + +var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) { + fmt.Println("Connected") +} + +var connectLostHandler mqtt.ConnectionLostHandler = func(client mqtt.Client, err error) { + fmt.Printf("Connect lost: %v", err) +} + +func sub(client mqtt.Client) { + topic := "gomqtt" + token := client.Subscribe(topic, 1, nil) + token.Wait() + fmt.Printf("Subscribed to topic: %s", topic) +} + +func publish(client mqtt.Client) { + num := 1000000000000 + for i := 0; i < num; i++ { + text := fmt.Sprintf("Message %d", i) + token := client.Publish("gomqtt", 0, false, text) + token.Wait() + time.Sleep(6 * time.Second) + } +} + +func main() { + var broker = "47.242.184.139" + var port = 1883 + opts := mqtt.NewClientOptions() + opts.AddBroker(fmt.Sprintf("tcp://%s:%d", broker, port)) + opts.SetClientID("go_mqtt_client") + opts.SetUsername("admin") + opts.SetPassword("452131wW452131wW$") + opts.SetDefaultPublishHandler(messagePubHandler) + opts.OnConnect = connectHandler + opts.OnConnectionLost = connectLostHandler + client := mqtt.NewClient(opts) + if token := client.Connect(); token.Wait() && token.Error() != nil { + fmt.Println(token.Error()) + } + + //client.IsConnectionOpen() + + go timing(client) + + sub(client) + publish(client) + + //client.Disconnect(1000) + +}