mirror of
https://github.com/oarkflow/mq.git
synced 2025-10-07 08:50:54 +08:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net"
|
|
"time"
|
|
|
|
"github.com/oarkflow/mq/codec"
|
|
"github.com/oarkflow/mq/consts"
|
|
)
|
|
|
|
func main() {
|
|
aesKey := []byte("thisis32bytekeyforaesencryption1")
|
|
hmacKey := []byte("thisisasecrethmackey1")
|
|
go func() {
|
|
listener, err := net.Listen("tcp", ":8081")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer listener.Close()
|
|
log.Println("Server is listening on :8080")
|
|
for {
|
|
conn, err := listener.Accept()
|
|
if err != nil {
|
|
log.Println("Connection error:", err)
|
|
continue
|
|
}
|
|
go func(c net.Conn) {
|
|
defer c.Close()
|
|
for {
|
|
msg, err := codec.ReadMessage(c, aesKey, hmacKey)
|
|
if err != nil {
|
|
if err.Error() == "EOF" {
|
|
log.Println("Client disconnected")
|
|
break
|
|
}
|
|
log.Println("Failed to receive message:", err)
|
|
break
|
|
}
|
|
log.Printf("Received Message:\n Headers: %v\n Topic: %s\n Command: %v\n Payload: %s\n",
|
|
msg.Headers, msg.Topic, msg.Command, msg.Payload)
|
|
}
|
|
}(conn)
|
|
}
|
|
}()
|
|
time.Sleep(5 * time.Second)
|
|
conn, err := net.Dial("tcp", ":8081")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer conn.Close()
|
|
headers := map[string]string{"Api-Key": "121323"}
|
|
data := map[string]interface{}{"temperature": 23.5, "humidity": 60}
|
|
payload, _ := json.Marshal(data)
|
|
msg := &codec.Message{
|
|
Headers: headers,
|
|
Topic: "sensor_data",
|
|
Command: consts.SUBSCRIBE,
|
|
Payload: payload,
|
|
}
|
|
if err := codec.SendMessage(conn, msg, aesKey, hmacKey); err != nil {
|
|
log.Fatalf("Error sending message: %v", err)
|
|
}
|
|
fmt.Println("Message sent successfully")
|
|
time.Sleep(5 * time.Second)
|
|
}
|