Liu Song’s Projects


~/Projects/mqtt-go

git clone https://code.lsong.org/mqtt-go

Commit

Commit
d14d944de9d028e6ffe84fd6dfb620c950b88dae
Author
mochi <[email protected]>
Date
2022-01-05 20:38:32 +0000 +0000
Diffstat
 examples/events/main.go | 21 ++++++++++++++++++++-

Update events example with publish hooks


diff --git a/examples/events/main.go b/examples/events/main.go
index f1239bfc602939d869bb3f17a1023bf07fbf7483..52057ddc26bd1c55bf4f1ed069bc598d46672917 100644
--- a/examples/events/main.go
+++ b/examples/events/main.go
@@ -11,6 +11,7 @@
 	"github.com/logrusorgru/aurora"
 
 	mqtt "github.com/mochi-co/mqtt/server"
+	"github.com/mochi-co/mqtt/server/events"
 	"github.com/mochi-co/mqtt/server/listeners"
 	"github.com/mochi-co/mqtt/server/listeners/auth"
 )
@@ -43,11 +44,29 @@ 			log.Fatal(err)
 		}
 	}()
 
+	// Add OnMessage Event Hook
+	server.Events.OnMessage = func(cl events.Client, pk events.Packet) {
+		fmt.Printf("< OnMessage received message from client %s: %s\n", cl.ID, string(pk.Payload))
+	}
+
+	// Add OnMessage Event Hook
+	server.Events.OnMessageModify = func(cl events.Client, pk events.Packet) (pkx events.Packet, err error) {
+		pkx = pk
+		if string(pk.Payload) == "hello" {
+			pkx.Payload = []byte("hello world")
+			fmt.Printf("< OnMessageModify modified message from client %s: %s\n", cl.ID, string(pkx.Payload))
+		} else {
+			fmt.Printf("< OnMessageModify received message from client %s: %s\n", cl.ID, string(pkx.Payload))
+		}
+
+		return pkx, nil
+	}
+
 	// Demonstration of directly publishing messages to a topic via the
 	// `server.Publish` method. Subscribe to `direct/publish` using your
 	// MQTT client to see the messages.
 	go func() {
-		for range time.Tick(time.Second * 5) {
+		for range time.Tick(time.Second * 10) {
 			server.Publish("direct/publish", []byte("hello world"), false)
 			fmt.Println("> issued direct message to direct/publish")
 		}