added api routes

This commit is contained in:
vel 2022-01-22 23:02:47 -08:00
parent fd536075c5
commit ef022499e7
Signed by: velvox
GPG Key ID: 1C8200C1D689CEF5
2 changed files with 34 additions and 19 deletions

View File

@ -12,13 +12,20 @@ var log = tlog.NewTaggedLogger("Logger", tlog.NewColor("38;5;111"))
func main() {
r := mux.NewRouter()
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
hub := ws.NewHub()
go hub.Run()
r.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
ws.ServeWs(hub, w, r)
})
r.HandleFunc("/api/users", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
resp := make(map[string]string)
resp := make(map[string]interface{})
resp["status"] = "ok"
resp["users"] = len(hub.Clients)
jsonResp, err := json.Marshal(resp)
if err != nil {
log.Fatalf("error in unmarshalling json. err: %s", err.Error())
log.Fatalf("error in marshaling json. err: %s", err.Error())
}
_, err = w.Write(jsonResp)
if err != nil {
@ -26,11 +33,19 @@ func main() {
}
return
})
hub := ws.NewHub()
go hub.Run()
r.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
ws.ServeWs(hub, w, r)
r.Methods("GET").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
resp := make(map[string]interface{})
resp["status"] = "ok"
jsonResp, err := json.Marshal(resp)
if err != nil {
log.Fatalf("error in marshaling json. err: %s", err.Error())
}
_, err = w.Write(jsonResp)
if err != nil {
return
}
return
})
err := http.ListenAndServe(":8080", r)

View File

@ -1,16 +1,16 @@
package ws
type Hub struct {
// Registered clients
clients map[*Client]bool
// Registered Clients
Clients map[*Client]bool
// Inbound messages from the clients
// Inbound messages from the Clients
broadcast chan RawMessage
// Register requests from the clients
// Register requests from the Clients
register chan *Client
// Unregister requests from clients
// Unregister requests from Clients
unregister chan *Client
}
@ -19,7 +19,7 @@ func NewHub() *Hub {
broadcast: make(chan RawMessage),
register: make(chan *Client),
unregister: make(chan *Client),
clients: make(map[*Client]bool),
Clients: make(map[*Client]bool),
}
}
@ -38,20 +38,20 @@ func (h *Hub) Run() {
for {
select {
case client := <-h.register:
h.clients[client] = true
h.Clients[client] = true
case client := <-h.unregister:
if _, ok := h.clients[client]; ok {
delete(h.clients, client)
if _, ok := h.Clients[client]; ok {
delete(h.Clients, client)
close(client.send)
}
case message := <-h.broadcast:
go h.handleMessage(message)
//for client := range h.clients {
//for client := range h.Clients {
// select {
// case client.send <- message:
// default:
// close(client.send)
// delete(h.clients, client)
// delete(h.Clients, client)
// }
//}
}