added api routes
This commit is contained in:
parent
fd536075c5
commit
ef022499e7
|
|
@ -12,13 +12,20 @@ var log = tlog.NewTaggedLogger("Logger", tlog.NewColor("38;5;111"))
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
r := mux.NewRouter()
|
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")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
resp := make(map[string]string)
|
resp := make(map[string]interface{})
|
||||||
resp["status"] = "ok"
|
resp["status"] = "ok"
|
||||||
|
resp["users"] = len(hub.Clients)
|
||||||
jsonResp, err := json.Marshal(resp)
|
jsonResp, err := json.Marshal(resp)
|
||||||
if err != nil {
|
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)
|
_, err = w.Write(jsonResp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -26,11 +33,19 @@ func main() {
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
hub := ws.NewHub()
|
r.Methods("GET").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
go hub.Run()
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
resp := make(map[string]interface{})
|
||||||
r.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
|
resp["status"] = "ok"
|
||||||
ws.ServeWs(hub, w, r)
|
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)
|
err := http.ListenAndServe(":8080", r)
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
package ws
|
package ws
|
||||||
|
|
||||||
type Hub struct {
|
type Hub struct {
|
||||||
// Registered clients
|
// Registered Clients
|
||||||
clients map[*Client]bool
|
Clients map[*Client]bool
|
||||||
|
|
||||||
// Inbound messages from the clients
|
// Inbound messages from the Clients
|
||||||
broadcast chan RawMessage
|
broadcast chan RawMessage
|
||||||
|
|
||||||
// Register requests from the clients
|
// Register requests from the Clients
|
||||||
register chan *Client
|
register chan *Client
|
||||||
|
|
||||||
// Unregister requests from clients
|
// Unregister requests from Clients
|
||||||
unregister chan *Client
|
unregister chan *Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ func NewHub() *Hub {
|
||||||
broadcast: make(chan RawMessage),
|
broadcast: make(chan RawMessage),
|
||||||
register: make(chan *Client),
|
register: make(chan *Client),
|
||||||
unregister: 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 {
|
for {
|
||||||
select {
|
select {
|
||||||
case client := <-h.register:
|
case client := <-h.register:
|
||||||
h.clients[client] = true
|
h.Clients[client] = true
|
||||||
case client := <-h.unregister:
|
case client := <-h.unregister:
|
||||||
if _, ok := h.clients[client]; ok {
|
if _, ok := h.Clients[client]; ok {
|
||||||
delete(h.clients, client)
|
delete(h.Clients, client)
|
||||||
close(client.send)
|
close(client.send)
|
||||||
}
|
}
|
||||||
case message := <-h.broadcast:
|
case message := <-h.broadcast:
|
||||||
go h.handleMessage(message)
|
go h.handleMessage(message)
|
||||||
//for client := range h.clients {
|
//for client := range h.Clients {
|
||||||
// select {
|
// select {
|
||||||
// case client.send <- message:
|
// case client.send <- message:
|
||||||
// default:
|
// default:
|
||||||
// close(client.send)
|
// close(client.send)
|
||||||
// delete(h.clients, client)
|
// delete(h.Clients, client)
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue