fix(pico): keep connCount consistent with connection indexes
This commit is contained in:
parent
1417d1aab9
commit
cd1caccbea
1 changed files with 3 additions and 3 deletions
|
|
@ -125,6 +125,7 @@ func (c *PicoChannel) createAndAddConnection(conn *websocket.Conn, sessionID str
|
||||||
c.sessionConnections[pc.sessionID] = bySession
|
c.sessionConnections[pc.sessionID] = bySession
|
||||||
}
|
}
|
||||||
bySession[pc.id] = pc
|
bySession[pc.id] = pc
|
||||||
|
c.connCount.Add(1)
|
||||||
|
|
||||||
return pc
|
return pc
|
||||||
}
|
}
|
||||||
|
|
@ -146,6 +147,7 @@ func (c *PicoChannel) removeConnection(connID string) *picoConn {
|
||||||
delete(c.sessionConnections, pc.sessionID)
|
delete(c.sessionConnections, pc.sessionID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
c.connCount.Add(-1)
|
||||||
|
|
||||||
return pc
|
return pc
|
||||||
}
|
}
|
||||||
|
|
@ -161,6 +163,7 @@ func (c *PicoChannel) takeAllConnections() []*picoConn {
|
||||||
}
|
}
|
||||||
clear(c.connections)
|
clear(c.connections)
|
||||||
clear(c.sessionConnections)
|
clear(c.sessionConnections)
|
||||||
|
c.connCount.Store(0)
|
||||||
|
|
||||||
return all
|
return all
|
||||||
}
|
}
|
||||||
|
|
@ -200,7 +203,6 @@ func (c *PicoChannel) Stop(ctx context.Context) error {
|
||||||
for _, pc := range c.takeAllConnections() {
|
for _, pc := range c.takeAllConnections() {
|
||||||
pc.close()
|
pc.close()
|
||||||
}
|
}
|
||||||
c.connCount.Store(0)
|
|
||||||
|
|
||||||
if c.cancel != nil {
|
if c.cancel != nil {
|
||||||
c.cancel()
|
c.cancel()
|
||||||
|
|
@ -353,7 +355,6 @@ func (c *PicoChannel) handleWebSocket(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pc := c.createAndAddConnection(conn, sessionID)
|
pc := c.createAndAddConnection(conn, sessionID)
|
||||||
c.connCount.Add(1)
|
|
||||||
|
|
||||||
logger.InfoCF("pico", "WebSocket client connected", map[string]any{
|
logger.InfoCF("pico", "WebSocket client connected", map[string]any{
|
||||||
"conn_id": pc.id,
|
"conn_id": pc.id,
|
||||||
|
|
@ -413,7 +414,6 @@ func (c *PicoChannel) readLoop(pc *picoConn) {
|
||||||
defer func() {
|
defer func() {
|
||||||
pc.close()
|
pc.close()
|
||||||
if removed := c.removeConnection(pc.id); removed != nil {
|
if removed := c.removeConnection(pc.id); removed != nil {
|
||||||
c.connCount.Add(-1)
|
|
||||||
logger.InfoCF("pico", "WebSocket client disconnected", map[string]any{
|
logger.InfoCF("pico", "WebSocket client disconnected", map[string]any{
|
||||||
"conn_id": removed.id,
|
"conn_id": removed.id,
|
||||||
"session_id": removed.sessionID,
|
"session_id": removed.sessionID,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue