mirror of
https://github.com/wavetermdev/backup.git
synced 2026-08-05 13:57:07 -07:00
fix concurrent write on websocket (only happened under intense write stress)
This commit is contained in:
@@ -78,15 +78,12 @@ func (ws *WSShell) WriteJson(val interface{}) error {
|
||||
}
|
||||
|
||||
func (ws *WSShell) WritePump() {
|
||||
ticker := time.NewTicker(pingPeriodTickTime)
|
||||
ticker := time.NewTicker(initialPingTime)
|
||||
defer func() {
|
||||
ticker.Stop()
|
||||
ws.Conn.Close()
|
||||
}()
|
||||
go func() {
|
||||
time.Sleep(initialPingTime)
|
||||
ws.WritePing()
|
||||
}()
|
||||
initialPing := true
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
@@ -95,6 +92,10 @@ func (ws *WSShell) WritePump() {
|
||||
log.Printf("WritePump %s err: %v\n", ws.RemoteAddr, err)
|
||||
return
|
||||
}
|
||||
if initialPing {
|
||||
initialPing = false
|
||||
ticker.Reset(pingPeriodTickTime)
|
||||
}
|
||||
|
||||
case msgBytes, ok := <-ws.WriteChan:
|
||||
if !ok {
|
||||
|
||||
Reference in New Issue
Block a user