From 0314ceae4af9a1449c76aec10325debb9372d1cf Mon Sep 17 00:00:00 2001 From: Lennart Buhl Date: Sun, 7 Feb 2016 17:46:20 +0100 Subject: [PATCH] pause if no clients are connected --- cmd/server.go | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/cmd/server.go b/cmd/server.go index 87ac7f0..a4e9edd 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -81,29 +81,31 @@ func serveClients() { level = data.LoadLevel(LevelFile) frameCounter = 0 for { // while true - for _, k := range clientKeys { - id, client := k, clients[k] - if id > 0 { - oFrame := level.GetFrame(0+frameCounter, client.w, frameCounter) - enc := gob.NewEncoder(client.con) - err := enc.Encode(oFrame) - if err != nil { - // client disconnected - //log.Println("BEFORE remove: clients:", clients, " clientKeys:", clientKeys) - // delete client - delete(clients, client.id) - // delete client key - // ugly as fuck in go to remove from a slice - // it *should* work though - idInKeys := sort.SearchInts(clientKeys, client.id) - clientKeys = append(clientKeys[:idInKeys], clientKeys[idInKeys+1:]...) - //log.Println("AFTER remove: clients:", clients, " clientKeys:", clientKeys) + if len(clients) > 0 { // pause if no clients are connected + for _, k := range clientKeys { + id, client := k, clients[k] + if id > 0 { + oFrame := level.GetFrame(0+frameCounter, client.w, frameCounter) + enc := gob.NewEncoder(client.con) + err := enc.Encode(oFrame) + if err != nil { + // client disconnected + //log.Println("BEFORE remove: clients:", clients, " clientKeys:", clientKeys) + // delete client + delete(clients, client.id) + // delete client key + // ugly as fuck in go to remove from a slice + // it *should* work though + idInKeys := sort.SearchInts(clientKeys, client.id) + clientKeys = append(clientKeys[:idInKeys], clientKeys[idInKeys+1:]...) + //log.Println("AFTER remove: clients:", clients, " clientKeys:", clientKeys) + } + //log.Println("ID:", id, "Client:", client) } - //log.Println("ID:", id, "Client:", client) } + frameCounter++ + time.Sleep(time.Second / time.Duration(level.FPS)) } - frameCounter++ - time.Sleep(time.Second / time.Duration(level.FPS)) } }