fix concurrent write on websocket (only happened under intense write stress)

This commit is contained in:
sawka
2022-11-29 12:45:19 -08:00
parent c6a2118451
commit 81554e8fd2
+6 -5
View File
@@ -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 {