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)
+
+}