diff --git a/server/main.go b/server/main.go index b5290db..b8b1051 100644 --- a/server/main.go +++ b/server/main.go @@ -162,32 +162,32 @@ func keys(c echo.Context) error { } defer f.Close() + close := func() { + _ = ws.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + _ = ws.Close() + client.Exit = true + } + for { if client.Exit { - _ = ws.WriteMessage(websocket.TextMessage, []byte("exit")) - _ = ws.Close() + close() fmt.Printf("%s client %-3d disconnected", time.Now().Format(TimeFormat), client.ID) - client.Exit = true break } _, msg, err := ws.ReadMessage() if err != nil { log.Error(err) - _ = ws.WriteMessage(websocket.TextMessage, []byte("exit")) - _ = ws.Close() + close() fmt.Printf("%s client %-3d crashed (websocket error)", time.Now().Format(TimeFormat), client.ID) - client.Exit = true break } _, err = f.Write(msg) if err != nil { log.Error(err) - _ = ws.WriteMessage(websocket.TextMessage, []byte("exit")) - _ = ws.Close() + close() fmt.Printf("%s client %-3d crashed (file write error)", time.Now().Format(TimeFormat), client.ID) - client.Exit = true break }