a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh
1package main 2 3import ( 4 "encoding/json" 5 "log" 6 "net/http" 7 8 "github.com/tmaxmax/go-sse" 9) 10 11var sseServer *sse.Server 12 13func initSSE() { 14 sseServer = &sse.Server{} 15 log.Printf("SSE server initialized (tmaxmax/go-sse)") 16} 17 18func handleSSE(w http.ResponseWriter, r *http.Request) { 19 log.Printf("SSE client connected from %s", r.RemoteAddr) 20 sseServer.ServeHTTP(w, r) 21} 22 23// NotifyLeaderboardUpdate sends updated leaderboard to all connected clients 24func NotifyLeaderboardUpdate() { 25 entries, err := getLeaderboard(50) 26 if err != nil { 27 log.Printf("Failed to get leaderboard for SSE: %v", err) 28 return 29 } 30 31 data, err := json.Marshal(entries) 32 if err != nil { 33 log.Printf("Failed to marshal leaderboard for SSE: %v", err) 34 return 35 } 36 37 msg := &sse.Message{} 38 msg.AppendData(string(data)) 39 40 // Publish to default topic 41 log.Printf("Publishing to SSE clients (%d bytes)", len(data)) 42 if err := sseServer.Publish(msg); err != nil { 43 log.Printf("Failed to publish SSE message: %v", err) 44 return 45 } 46 47 log.Printf("Broadcast leaderboard update to SSE clients (%d bytes)", len(data)) 48}