package main import ( "context" "log" "net/http" ) func main() { InitDatabase(context.Background()) srv := &wsServer{ OnOpen: func(c *Client) { AddOrUpdateConnectedClientToCache(&mu, c) log.Println("client connected") }, OnClose: func(c *Client, err error) { log.Println("client disconnected:", err) RemoveConnectedClientFromCache(&mu, c) }, OnMessage: func(c *Client, msg map[string]any) { log.Printf("received: %v\n", msg) if c.User == nil { handleUnauthenticatedMessage(c, msg) } else { handleAuthenticatedMessage(c, msg) } }, } http.Handle("/ws", srv) log.Println("server listening on :8080") http.HandleFunc("POST /new/account", RegisterHandler) http.HandleFunc("POST /new/token", LoginHandler) http.HandleFunc("POST /new/group", CreateGroupHandler) http.HandleFunc("POST /new/messageto/{groupid}", SendMessageHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }