package main import ( "log" "net/http" "sync" "github.com/gorilla/websocket" ) type webSocketHandler struct { upgrader websocket.Upgrader } // GLOBALS var connections int = 0 var wg sync.WaitGroup func (wsh webSocketHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { //upgrade http connection to websocket connection, err := wsh.upgrader.Upgrade(w, r, nil) if err != nil { log.Printf("Error while upgrading connection to websocket: %s", err) return } connections++ log.Printf("New websocket connection. There are now %v\n", connections) wg.Add(1) go func() { for { } }() defer connection.Close() } func main() { webSocketHandler := webSocketHandler{ upgrader: websocket.Upgrader{}, } var port string = "8080" http.Handle("/", webSocketHandler) wg.Add(1) log.Printf("listening on port %s...\n", port) log.Fatal(http.ListenAndServe("localhost:8080", nil)) wg.Wait() }