parse messages
This commit is contained in:
parent
65ad286add
commit
0897210754
5 changed files with 193 additions and 2 deletions
|
|
@ -1,18 +1,48 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
ID int
|
||||
Data []string
|
||||
}
|
||||
|
||||
func ParseMsg(msg string) (*Message, error) {
|
||||
parts := strings.Split(msg, ",")
|
||||
msgIdStr := parts[0]
|
||||
if !strings.HasPrefix(msgIdStr, "M") {
|
||||
return nil, fmt.Errorf("message must start with 'M' prefix")
|
||||
}
|
||||
msgIdStr = strings.TrimPrefix(msgIdStr, "M")
|
||||
msgId, err := strconv.Atoi(msgIdStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
msgData := make([]string, len(parts)-1)
|
||||
for i, data := range parts[1:] {
|
||||
msgData[i] = strings.TrimSpace(data)
|
||||
}
|
||||
message := &Message{
|
||||
ID: msgId,
|
||||
Data: msgData,
|
||||
}
|
||||
return message, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Initialize JSON logger
|
||||
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
|
||||
slog.SetDefault(logger)
|
||||
|
||||
addr := "192.168.1.153:8080"
|
||||
addr := "0.0.0.0:8080"
|
||||
slog.Info("Starting TCP server", "address", addr)
|
||||
|
||||
//Resolve address
|
||||
|
|
@ -60,7 +90,14 @@ func handleConnection(conn *net.TCPConn) {
|
|||
if n == 0 {
|
||||
return
|
||||
}
|
||||
slog.Info("Received message", "message", string(buffer[:n]), "bytes", n)
|
||||
msgStr := string(buffer[:n])
|
||||
slog.Info("Received message", "message", msgStr, "bytes", n)
|
||||
msg, err := ParseMsg(msgStr)
|
||||
if err != nil {
|
||||
slog.Error("Error parsing message", "error", err)
|
||||
return
|
||||
}
|
||||
slog.Info("Parsed message", "message", msg)
|
||||
|
||||
//Echo message back
|
||||
// _, err = conn.Write(buffer[:n])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue