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{})
|
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() {
|
go func() {
|
||||||
defer close(done)
|
defer close(done)
|
||||||
for {
|
for {
|
||||||
@ -106,6 +126,7 @@ func (c *Client) connect(stop <-chan struct{}) error {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if resp := c.handler.Handle(msg); resp != nil {
|
if resp := c.handler.Handle(msg); resp != nil {
|
||||||
|
conn.SetWriteDeadline(time.Now().Add(10 * time.Second))
|
||||||
conn.WriteMessage(websocket.TextMessage, resp)
|
conn.WriteMessage(websocket.TextMessage, resp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user