mirror of
https://github.com/owncast/owncast.git
synced 2024-11-22 04:40:37 +03:00
Centralize chan closure to be done in the client, not the server. Set chan size to max message size.
This commit is contained in:
parent
f782e82909
commit
c3e8e78dad
2 changed files with 9 additions and 4 deletions
|
@ -156,6 +156,10 @@ func (c *ChatClient) close() {
|
|||
|
||||
c.conn.Close()
|
||||
c.server.unregister <- c
|
||||
if c.send != nil {
|
||||
close(c.send)
|
||||
c.send = nil
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ChatClient) passesRateLimit() bool {
|
||||
|
@ -175,7 +179,9 @@ func (c *ChatClient) sendPayload(payload events.EventPayload) {
|
|||
return
|
||||
}
|
||||
|
||||
c.send <- data
|
||||
if c.send != nil {
|
||||
c.send <- data
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ChatClient) sendAction(message string) {
|
||||
|
|
|
@ -54,7 +54,6 @@ func (s *ChatServer) Run() {
|
|||
if _, ok := s.clients[client.id]; ok {
|
||||
s.mu.Lock()
|
||||
delete(s.clients, client.id)
|
||||
close(client.send)
|
||||
s.mu.Unlock()
|
||||
}
|
||||
|
||||
|
@ -72,7 +71,7 @@ func (s *ChatServer) Addclient(conn *websocket.Conn, user *user.User, accessToke
|
|||
User: user,
|
||||
ipAddress: conn.RemoteAddr().String(),
|
||||
accessToken: accessToken,
|
||||
send: make(chan []byte, 256),
|
||||
send: make(chan []byte, maxMessageSize),
|
||||
UserAgent: userAgent,
|
||||
ConnectedAt: time.Now(),
|
||||
}
|
||||
|
@ -195,7 +194,7 @@ func (s *ChatServer) Broadcast(payload events.EventPayload) error {
|
|||
select {
|
||||
case client.send <- data:
|
||||
default:
|
||||
close(client.send)
|
||||
client.close()
|
||||
delete(s.clients, client.id)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue