package main import ( "log" "math/rand" "net/http" "time" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // Allow all connections }, } func handleWebSocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("Upgrade error:", err) return } defer conn.Close() ticker := time.NewTicker(1 * time.Second) defer ticker.Stop() for { select { case <-ticker.C: // Generate random number between 1 and 100 randomNumber := rand.Intn(100) + 1 // Send the number to the client err := conn.WriteJSON(map[string]int{ "value": randomNumber, }) if err != nil { log.Println("Write error:", err) return } } } } func main() { // Initialize random seed rand.Seed(time.Now().UnixNano()) // Serve static files fs := http.FileServer(http.Dir("./frontend/dist")) http.Handle("/", fs) // WebSocket endpoint http.HandleFunc("/ws", handleWebSocket) log.Println("Server starting on :8080...") log.Fatal(http.ListenAndServe(":8080", nil)) }