fix: WS-Client Ping-Loop (30s) — Verbindung bricht nicht mehr nach 70s ab
This commit is contained in:
parent
ef567874c6
commit
7a5f4c0564
@ -95,6 +95,26 @@ func (c *Client) connect(stop <-chan struct{}) error {
|
||||
})
|
||||
|
||||
done := make(chan struct{})
|
||||
|
||||
// Ping-Loop: alle 30s einen Ping senden um Verbindung am Leben zu halten
|
||||
go func() {
|
||||
ticker := time.NewTicker(30 * time.Second)
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
|
||||
if err := conn.WriteMessage(websocket.PingMessage, nil); err != nil {
|
||||
return
|
||||
}
|
||||
case <-done:
|
||||
return
|
||||
case <-stop:
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer close(done)
|
||||
for {
|
||||
@ -106,6 +126,7 @@ func (c *Client) connect(stop <-chan struct{}) error {
|
||||
return
|
||||
}
|
||||
if resp := c.handler.Handle(msg); resp != nil {
|
||||
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
|
||||
conn.WriteMessage(websocket.TextMessage, resp)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user