34 lines
625 B
Go
34 lines
625 B
Go
package socketapi
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/fasthttp/websocket"
|
|
|
|
"realy.lol/context"
|
|
"realy.lol/log"
|
|
)
|
|
|
|
func (a *A) Pinger(ctx context.T, ticker *time.Ticker, cancel context.F, remote string) {
|
|
log.T.F("running pinger for %s", remote)
|
|
defer func() {
|
|
cancel()
|
|
ticker.Stop()
|
|
_ = a.Listener.Conn.Close()
|
|
}()
|
|
var err error
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
err = a.Listener.Conn.WriteControl(websocket.PingMessage, nil,
|
|
time.Now().Add(DefaultPingWait))
|
|
if err != nil {
|
|
log.E.F("%s error writing ping: %v; closing websocket", remote, err)
|
|
return
|
|
}
|
|
case <-ctx.Done():
|
|
return
|
|
}
|
|
}
|
|
}
|