its for when you want to get like notifications for your reposts

feat(server): implement pings, dont kill ws if empty message is received from client

ptr.pet 2ec37d72 c01d5920

verified
Changed files
+19 -3
server
+19 -3
server/main.go
···
import (
"context"
"encoding/json"
+
"errors"
+
"io"
"log"
"log/slog"
"net/http"
···
logger.Info("serving subscriber")
+
// send pings
+
go func() {
+
for {
+
select {
+
case <-r.Context().Done():
+
return
+
default:
+
conn.WriteMessage(websocket.PingMessage, []byte{})
+
time.Sleep(time.Second * 15)
+
}
+
}
+
}()
+
for {
var msg SubscriberMessage
err := conn.ReadJSON(&msg)
-
if err != nil {
-
logger.Info("WebSocket connection closed", "error", err)
+
// dont kill websocket if its no value
+
if err != nil && !errors.Is(err, io.ErrUnexpectedEOF) {
+
logger.Error("WebSocket connection closed", "error", err)
break
}
switch msg.Type {
···
var innerMsg SubscriberUpdateListenTo
if err := json.Unmarshal(msg.Content, &innerMsg); err != nil {
-
logger.Info("invalid message", "error", err)
+
logger.Debug("invalid message", "error", err)
break
}