-
Notifications
You must be signed in to change notification settings - Fork 2
/
handler_event.go
70 lines (69 loc) · 1.52 KB
/
handler_event.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package digest
//
//import (
// "github.com/gorilla/websocket"
// "net/http"
// "strings"
//)
//
//type Subscriber struct {
// conn *websocket.Conn
// events []string
//}
//
//var clients = make(map[*websocket.Conn]bool)
//var subscribers = make(map[*websocket.Conn]*Subscriber)
//
//var upgrader = websocket.Upgrader{
// CheckOrigin: func(r *http.Request) bool {
// return true
// },
//}
//
//func (hd *Handlers) handleConnections(w http.ResponseWriter, r *http.Request) {
// ws, err := upgrader.Upgrade(w, r, nil)
// if err != nil {
// log.Fatal(err)
// }
// defer ws.Close()
//
// clients[ws] = true
//
// for {
// _, msg, err := ws.ReadMessage()
// if err != nil {
// delete(clients, ws)
// delete(subscribers, ws)
// break
// }
//
// messageParts := strings.Split(string(msg), ":")
// if len(messageParts) == 2 && messageParts[0] == "subscribe" {
// eventName := messageParts[1]
// if sub, ok := subscribers[ws]; ok {
// sub.events = append(sub.events, eventName)
// } else {
// subscribers[ws] = &Subscriber{
// conn: ws,
// events: []string{eventName},
// }
// }
// }
// }
//}
//
//func emitEvent(eventName string, message []byte) {
// for _, sub := range subscribers {
// for _, subEvent := range sub.events {
// if subEvent == eventName {
// err := sub.conn.WriteMessage(websocket.TextMessage, message)
// if err != nil {
// log.Printf("Websocket error: %v", err)
// sub.conn.Close()
// delete(clients, sub.conn)
// delete(subscribers, sub.conn)
// }
// }
// }
// }
//}