39 lines
945 B
Go
39 lines
945 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func main() {
|
|
InitDatabase(context.Background())
|
|
srv := &wsServer{
|
|
OnOpen: func(c *Client) {
|
|
AddOrUpdateConnectedClientToCache(&mu, c)
|
|
log.Println("client connected")
|
|
},
|
|
OnClose: func(c *Client, err error) {
|
|
log.Println("client disconnected:", err)
|
|
RemoveConnectedClientFromCache(&mu, c)
|
|
},
|
|
OnMessage: func(c *Client, msg map[string]any) {
|
|
log.Printf("received: %v\n", msg)
|
|
if c.User == nil {
|
|
handleUnauthenticatedMessage(c, msg)
|
|
} else {
|
|
handleAuthenticatedMessage(c, msg)
|
|
}
|
|
},
|
|
}
|
|
|
|
http.Handle("/ws", srv)
|
|
log.Println("server listening on :8080")
|
|
http.HandleFunc("POST /new/account", RegisterHandler)
|
|
http.HandleFunc("POST /new/token", LoginHandler)
|
|
http.HandleFunc("POST /new/group", CreateGroupHandler)
|
|
http.HandleFunc("POST /new/messageto/group/{groupid}", SendMessageToGroupHandler)
|
|
|
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
}
|