Files
go-socket/main.go
T
2026-03-11 19:23:58 +01:00

43 lines
1.1 KiB
Go

package main
import (
"context"
"log"
"net/http"
"github.com/coder/websocket"
)
func main() {
InitDatabase(context.Background())
srv := &wsServer{
OnOpen: func(ctx context.Context, conn *websocket.Conn) {
log.Println("client connected")
if getConnectionDataIfAuth(conn) != nil {
mu.Lock()
unauthenticatedConnections = append(unauthenticatedConnections, conn)
mu.Unlock()
}
},
OnClose: func(ctx context.Context, conn *websocket.Conn, err error) {
log.Println("client disconnected:", err)
removeConnectionCache(conn)
},
OnMessage: func(ctx context.Context, conn *websocket.Conn, msg map[string]any) {
log.Printf("received: %v\n", msg)
authConnOrNil := getConnectionDataIfAuth(conn)
if authConnOrNil == nil {
handleUnauthenticatedMessage(ctx, conn, msg)
} else {
handleAuthenticatedMessage(conn, msg)
}
},
}
http.Handle("/ws", srv)
log.Println("server listening on :8080")
http.HandleFunc("POST /register", RegisterHandler)
http.HandleFunc("POST /login", LoginHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}