govite/main.go
2025-05-04 15:12:39 +07:00

63 lines
1.2 KiB
Go
Executable File

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("/go/ws", handleWebSocket)
log.Println("Server starting on :8080...")
log.Fatal(http.ListenAndServe(":8080", nil))
}