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)) } }