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() {
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue