diff --git a/.gitignore b/.gitignore index 0026861..ac71020 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ _cgo_export.* _testmain.go *.exe + +.idea/ +*.iml \ No newline at end of file diff --git a/examples/chat/conn.go b/examples/chat/conn.go index 40fd38c..2fe2357 100644 --- a/examples/chat/conn.go +++ b/examples/chat/conn.go @@ -30,8 +30,8 @@ var upgrader = websocket.Upgrader{ WriteBufferSize: 1024, } -// connection is an middleman between the websocket connection and the hub. -type connection struct { +// Conn is an middleman between the websocket connection and the hub. +type Conn struct { // The websocket connection. ws *websocket.Conn @@ -40,9 +40,9 @@ type connection struct { } // readPump pumps messages from the websocket connection to the hub. -func (c *connection) readPump() { +func (c *Conn) readPump() { defer func() { - h.unregister <- c + hub.unregister <- c c.ws.Close() }() c.ws.SetReadLimit(maxMessageSize) @@ -56,18 +56,18 @@ func (c *connection) readPump() { } break } - h.broadcast <- message + hub.broadcast <- message } } // write writes a message with the given message type and payload. -func (c *connection) write(mt int, payload []byte) error { +func (c *Conn) write(mt int, payload []byte) error { c.ws.SetWriteDeadline(time.Now().Add(writeWait)) return c.ws.WriteMessage(mt, payload) } // writePump pumps messages from the hub to the websocket connection. -func (c *connection) writePump() { +func (c *Conn) writePump() { ticker := time.NewTicker(pingPeriod) defer func() { ticker.Stop() @@ -98,8 +98,8 @@ func serveWs(w http.ResponseWriter, r *http.Request) { log.Println(err) return } - c := &connection{send: make(chan []byte, 256), ws: ws} - h.register <- c - go c.writePump() - c.readPump() + conn := &Conn{send: make(chan []byte, 256), ws: ws} + hub.register <- conn + go conn.writePump() + conn.readPump() } diff --git a/examples/chat/hub.go b/examples/chat/hub.go index 449ba75..92da865 100644 --- a/examples/chat/hub.go +++ b/examples/chat/hub.go @@ -6,44 +6,44 @@ package main // hub maintains the set of active connections and broadcasts messages to the // connections. -type hub struct { +type Hub struct { // Registered connections. - connections map[*connection]bool + connections map[*Conn]bool // Inbound messages from the connections. broadcast chan []byte // Register requests from the connections. - register chan *connection + register chan *Conn // Unregister requests from connections. - unregister chan *connection + unregister chan *Conn } -var h = hub{ +var hub = Hub{ broadcast: make(chan []byte), - register: make(chan *connection), - unregister: make(chan *connection), - connections: make(map[*connection]bool), + register: make(chan *Conn), + unregister: make(chan *Conn), + connections: make(map[*Conn]bool), } -func (h *hub) run() { +func (h *Hub) run() { for { select { - case c := <-h.register: - h.connections[c] = true - case c := <-h.unregister: - if _, ok := h.connections[c]; ok { - delete(h.connections, c) - close(c.send) + case conn := <-h.register: + h.connections[conn] = true + case conn := <-h.unregister: + if _, ok := h.connections[conn]; ok { + delete(h.connections, conn) + close(conn.send) } - case m := <-h.broadcast: - for c := range h.connections { + case message := <-h.broadcast: + for conn := range h.connections { select { - case c.send <- m: + case conn.send <- message: default: - close(c.send) - delete(h.connections, c) + close(conn.send) + delete(hub.connections, conn) } } } diff --git a/examples/chat/main.go b/examples/chat/main.go index 3c4448d..39943e6 100644 --- a/examples/chat/main.go +++ b/examples/chat/main.go @@ -12,7 +12,7 @@ import ( ) var addr = flag.String("addr", ":8080", "http service address") -var homeTempl = template.Must(template.ParseFiles("home.html")) +var homeTemplate = template.Must(template.ParseFiles("home.html")) func serveHome(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { @@ -24,12 +24,12 @@ func serveHome(w http.ResponseWriter, r *http.Request) { return } w.Header().Set("Content-Type", "text/html; charset=utf-8") - homeTempl.Execute(w, r.Host) + homeTemplate.Execute(w, r.Host) } func main() { flag.Parse() - go h.run() + go hub.run() http.HandleFunc("/", serveHome) http.HandleFunc("/ws", serveWs) err := http.ListenAndServe(*addr, nil)