You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.3 KiB
83 lines
1.3 KiB
package server |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"log" |
|
"net/http" |
|
|
|
"daydev.org/shipsgs/internal/player" |
|
"github.com/gorilla/websocket" |
|
) |
|
|
|
type Health struct { |
|
Health string `json:"Health"` |
|
Lobbies int `json:"Lobbies"` |
|
} |
|
|
|
func health(w http.ResponseWriter, r *http.Request) { |
|
|
|
} |
|
|
|
func index(w http.ResponseWriter, r *http.Request) { |
|
fmt.Fprintf(w, "index") |
|
|
|
} |
|
|
|
func wsEndpoint(w http.ResponseWriter, r *http.Request) { |
|
var upgrader = websocket.Upgrader{ |
|
ReadBufferSize: 1024, |
|
WriteBufferSize: 1024, |
|
CheckOrigin: func(r *http.Request) bool { |
|
return true // DANGEROUS. USING FOR DEV PURPOSES ONLY |
|
}, |
|
} |
|
|
|
conn, err := upgrader.Upgrade(w, r, nil) |
|
if err != nil { |
|
log.Println(r.RemoteAddr) |
|
log.Println(err) |
|
return |
|
} |
|
|
|
player := player.Player{ |
|
Conn: conn, |
|
} |
|
player.Name = "Yale" |
|
|
|
log.Println(r.RemoteAddr) |
|
|
|
for { |
|
messageType, p, err := conn.ReadMessage() |
|
if err != nil { |
|
log.Println(err) |
|
return |
|
} |
|
if err := conn.WriteMessage(messageType, p); err != nil { |
|
log.Println(err) |
|
return |
|
} |
|
} |
|
|
|
} |
|
|
|
func setupRoutes() { |
|
http.HandleFunc("/", index) |
|
http.HandleFunc("/ws", wsEndpoint) |
|
|
|
} |
|
|
|
func SetupAndRun(port string, sighup *chan bool) { |
|
setupRoutes() |
|
|
|
srv := &http.Server{Addr: port} |
|
|
|
go func() { |
|
<-*sighup |
|
log.Println("Shutting down the webserver") |
|
srv.Shutdown(context.TODO()) |
|
}() |
|
|
|
log.Fatal(srv.ListenAndServe()) |
|
|
|
}
|
|
|