ping every 29 seconds.

fixes https://github.com/nbd-wtf/go-nostr/issues/72
This commit is contained in:
fiatjaf 2023-03-25 14:59:35 -03:00
parent 35875e6071
commit d3a1624880
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1

View File

@ -100,6 +100,23 @@ func (r *Relay) Connect(ctx context.Context) error {
conn := NewConnection(socket)
r.Connection = conn
// ping every 29 seconds
ticker := time.NewTicker(29 * time.Second)
defer ticker.Stop()
go func() {
for {
select {
case <-ticker.C:
err := conn.socket.WriteMessage(websocket.PingMessage, nil)
if err != nil {
log.Printf("error writing ping: %v; closing websocket", err)
return
}
}
}
}()
// handling received messages
go func() {
for {
typ, message, err := conn.socket.ReadMessage()