From 662340f5f76533ead3a71568c12e3273245b2521 Mon Sep 17 00:00:00 2001 From: Askill Date: Sat, 28 May 2022 15:28:14 +0200 Subject: [PATCH] onlnding updates --- go/server.go | 39 ++++++++++++++++++++++++--------------- python/clients.py | 8 +++----- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/go/server.go b/go/server.go index 0e4c782..b8cd244 100644 --- a/go/server.go +++ b/go/server.go @@ -3,7 +3,6 @@ package main import ( "encoding/json" "flag" - "fmt" "log" "net/http" "time" @@ -18,6 +17,27 @@ var upgrader = websocket.Upgrader{ var img = GetImage(10, 10) var tmpImage = GetImage(img.width, img.height) +func write(ticker time.Ticker, c websocket.Conn) { + for range ticker.C { + diff := tmpImage.GetDiff(&img) + for i := 0; i < int(diff.Width*diff.Height); i++ { + pix := diff.Pixels[i] + if pix.UserID != 0 { + x := i / int(diff.Width) + y := i % int(diff.Height) + msg := Message{X: uint16(x), Y: uint16(y), Timestamp: pix.Timestamp, UserID: pix.UserID, Color: pix.Color} + marshalMsg, err := json.Marshal(msg) + if err != nil { + log.Println("error while writing image", err) + break + } + err = c.WriteMessage(1, marshalMsg) + } + } + copy(img.pixels, tmpImage.pixels) + } +} + func serve(w http.ResponseWriter, r *http.Request) { c, err := upgrader.Upgrade(w, r, nil) if err != nil { @@ -26,20 +46,7 @@ func serve(w http.ResponseWriter, r *http.Request) { } defer c.Close() ticker := time.NewTicker(1 * time.Second) - go func() { - for range ticker.C { - diff := tmpImage.GetDiff(&img) - msg, err := json.Marshal(diff) - fmt.Println(diff) - // TODO only write chenaged pixels to channel instead of entire image - err = c.WriteMessage(1, msg) - if err != nil { - log.Println("error while writing image", err) - break - } - copy(img.pixels, tmpImage.pixels) - } - }() + go write(*ticker, *c) for { _, msg, err := c.ReadMessage() if err != nil { @@ -59,6 +66,8 @@ func main() { flag.Parse() log.SetFlags(0) + log.Println("starting server on", *addr) http.HandleFunc("/", serve) + log.Fatal(http.ListenAndServe(*addr, nil)) } diff --git a/python/clients.py b/python/clients.py index d9eb6c9..cb938db 100644 --- a/python/clients.py +++ b/python/clients.py @@ -21,19 +21,17 @@ class pixel: async def main(): - async with websockets.connect("ws://localhost:8080/") as websocket: - for i in range(10): + for _ in range(10): message = pixel( - x=random.randint(0, 10), - y=random.randint(0, 10), + x=random.randint(0, 9), + y=random.randint(0, 9), color=random.randint(0,15), timestamp=int(time.time()), userid=1, ) print(message) await websocket.send(json.dumps(message.__dict__)) - print(await websocket.recv()) while True: x = await websocket.recv() print(x)