1 // Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
7 // Hub maintains the set of active clients and broadcasts messages to the
10 // Registered clients.
11 clients map[*Client]bool
13 // Inbound messages from the clients.
16 // Register requests from the clients.
19 // Unregister requests from clients.
20 unregister chan *Client
25 broadcast: make(chan []byte),
26 register: make(chan *Client),
27 unregister: make(chan *Client),
28 clients: make(map[*Client]bool),
35 case client := <-h.register:
36 h.clients[client] = true
37 case client := <-h.unregister:
38 if _, ok := h.clients[client]; ok {
39 delete(h.clients, client)
42 case message := <-h.broadcast:
43 for client := range h.clients {
45 case client.send <- message:
48 delete(h.clients, client)