Browse Source

Pass along just the client id instead a reference to the entire client when unregistering the client

pull/1269/head
Gabe Kangas 4 years ago
parent
commit
f85b54cfeb
  1. 2
      controllers/chat.go
  2. 2
      core/chat/chatclient.go
  3. 10
      core/chat/server.go

2
controllers/chat.go

@ -25,7 +25,7 @@ func GetChatMessages(w http.ResponseWriter, r *http.Request) { @@ -25,7 +25,7 @@ func GetChatMessages(w http.ResponseWriter, r *http.Request) {
messages := chat.GetChatHistory()
if err := json.NewEncoder(w).Encode(messages); err != nil {
log.Errorln(err)
log.Debugln(err)
}
default:
w.WriteHeader(http.StatusNotImplemented)

2
core/chat/chatclient.go

@ -155,7 +155,7 @@ func (c *ChatClient) close() { @@ -155,7 +155,7 @@ func (c *ChatClient) close() {
log.Traceln("client closed:", c.User.DisplayName, c.id, c.ipAddress)
c.conn.Close()
c.server.unregister <- c
c.server.unregister <- c.id
if c.send != nil {
close(c.send)
c.send = nil

10
core/chat/server.go

@ -32,7 +32,7 @@ type ChatServer struct { @@ -32,7 +32,7 @@ type ChatServer struct {
inbound chan chatClientEvent
// unregister requests from clients.
unregister chan *ChatClient
unregister chan uint // the ChatClient id
}
func NewChat() *ChatServer {
@ -40,7 +40,7 @@ func NewChat() *ChatServer { @@ -40,7 +40,7 @@ func NewChat() *ChatServer {
clients: map[uint]*ChatClient{},
outbound: make(chan []byte),
inbound: make(chan chatClientEvent),
unregister: make(chan *ChatClient),
unregister: make(chan uint),
maxClientCount: handleMaxConnectionCount(),
}
@ -50,10 +50,10 @@ func NewChat() *ChatServer { @@ -50,10 +50,10 @@ func NewChat() *ChatServer {
func (s *ChatServer) Run() {
for {
select {
case client := <-s.unregister:
if _, ok := s.clients[client.id]; ok {
case clientId := <-s.unregister:
if _, ok := s.clients[clientId]; ok {
s.mu.Lock()
delete(s.clients, client.id)
delete(s.clients, clientId)
s.mu.Unlock()
}

Loading…
Cancel
Save