From 895502824f4e4f76d8256b3e05a4223cc8accf42 Mon Sep 17 00:00:00 2001 From: matst80 Date: Thu, 21 Nov 2024 20:16:41 +0100 Subject: [PATCH] echo server --- deployment/deployment.yaml | 14 ++++++++++++++ main.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/deployment/deployment.yaml b/deployment/deployment.yaml index debe0d2..ffad7b1 100644 --- a/deployment/deployment.yaml +++ b/deployment/deployment.yaml @@ -55,6 +55,8 @@ spec: ports: - containerPort: 8080 name: web + - containerPort: 1234 + name: echo - containerPort: 1337 name: rpc - containerPort: 1338 @@ -205,6 +207,18 @@ spec: --- kind: Service apiVersion: v1 +metadata: + name: cart-echo +spec: + selector: + app: cart-actor + type: LoadBalancer + ports: + - name: echo + port: 1234 +--- +kind: Service +apiVersion: v1 metadata: name: cart-actor annotations: diff --git a/main.go b/main.go index 78e4671..559fb3c 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "fmt" "log" + "net" "net/http" "net/http/pprof" "os" @@ -186,6 +187,33 @@ func main() { w.Write([]byte("1.0.0")) }) + l, err := net.Listen("tcp", ":1234") + if err == nil { + + go func(listener net.Listener) { + conn, err := l.Accept() + if err != nil { + log.Fatalf("Error accepting echo connection: %v\n", err) + } + go func(c net.Conn) { + defer c.Close() + buf := make([]byte, 1024) + for { + n, err := c.Read(buf) + if err != nil { + log.Fatalf("Error reading from connection: %v\n", err) + } + _, err = c.Write(buf[:n]) + if err != nil { + log.Fatalf("Error writing to connection: %v\n", err) + } + } + }(conn) + }(l) + } else { + log.Println("Error creating echo server: %v\n", err) + } + sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, syscall.SIGTERM)