Skip to main content
Brave Programmer Logo

BraveProgrammer

BraveProgrammer

HomeProjectsBlogsCoursesLessonsAbout

Site footer

BraveProgrammer

Free coding courses, practical tutorials, and real projects from BraveProgrammer. Learn web development with React, Next.js, and TypeScript.

Navigation

  • Home
  • Projects
  • Blogs
  • Courses

Resources

  • About
  • Lessons

© 2026 BraveProgrammer. All rights reserved.

  1. Courses
  2. /
  3. Go Programming Bootcamp

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)

Info

Always set a proper CheckOrigin in production to protect against CSRF.

Previous: Authentication – JWT and MiddlewareNext: Testing Concurrency – Race Detector and `testing`