package main import ( "fmt" "log" "net/http" "github.com/gorilla/websocket" "github.com/knative/docs/code-samples/serving/websockets-go/pkg/handlers" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, } func handleWebSocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Printf("Error upgrading to websocket: %v", err) return } handlers.OnOpen(conn) go func() { defer handlers.OnClose(conn) for { messageType, message, err := conn.ReadMessage() if err != nil { handlers.OnError(conn, err) break } handlers.OnMessage(conn, messageType, message) } }() } func main() { http.HandleFunc("/ws", handleWebSocket) fmt.Println("Starting server on :8080...") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatalf("Server error: %v", err) } }