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}