package main import ( "context" "log" "net/http" "time" "github.com/coder/websocket" "github.com/coder/websocket/wsjson" ) func ServeConnection(responseWriter http.ResponseWriter, request *http.Request) { connection, err := websocket.Accept(responseWriter, request, nil) if err != nil { log.Printf("websocket accept error: %v", err) return } ctx, cancel := context.WithTimeout(context.Background(), time.Second*30) defer cancel() for { var clientMessage any err := wsjson.Read(ctx, connection, &clientMessage) if err != nil { log.Printf("read error: %clientMessage", err) return } log.Printf("received: %clientMessage", clientMessage) // process and optionally respond err = wsjson.Write(ctx, connection, map[string]string{"status": "ok"}) if err != nil { log.Printf("write error: %clientMessage", err) return } } } func handleUnauthenticatedMessage() {} func handleAuthenticatedMessage() {}