Lesson 38 of 60 · Go
WebSockets with `gorilla/websocket`
Duration: 20 minutes
Real‑time Communication
This lesson explains the main concept clearly with beginner-friendly examples and background so you can learn why the code works.
Add WebSocket support using the popular gorilla/websocket library.
$ go get github.com/gorilla/websocket
import (
"github.com/gorilla/websocket"
"net/http"
)
var upgrader = websocket.Upgrader{ // allow any origin for demo
CheckOrigin: func(r *http.Request) bool { return true },
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil { log.Print("upgrade error:", err); return }
defer conn.Close()
for {
mt, msg, err := conn.ReadMessage()
if err != nil { log.Println("read error:", err); break }
// Echo back the same message
if err = conn.WriteMessage(mt, msg); err != nil { log.Println("write error:", err); break }
}
}
Register:
http.HandleFunc("/ws", wsHandler)