Skip to content

Commit b4478e2

Browse files
authored
fix: handle ping, pong, and close opcodes
We'll also skip truly empty messages, but this is very unlikely.
1 parent 12a52e8 commit b4478e2

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

internal/pkg/source/hq/websocket.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"syscall"
1010
"time"
1111

12+
"github.com/gobwas/ws"
1213
"github.com/gobwas/ws/wsutil"
1314
"github.com/internetarchive/Zeno/internal/pkg/config"
1415
"github.com/internetarchive/Zeno/internal/pkg/log"
@@ -63,7 +64,24 @@ func (s *HQ) listenMessages() {
6364
continue
6465
}
6566
for _, msg := range msgs {
66-
mType, err := dispatchMessageByType(bytes.TrimSpace(msg.Payload))
67+
if msg.OpCode == ws.OpPing || msg.OpCode == ws.OpPong {
68+
continue
69+
}
70+
71+
if msg.OpCode == ws.OpClose {
72+
logger.Warn("received close frame from HQ websocket, reconnecting")
73+
conn.Close()
74+
s.reconnectWebsocket(log.NewFieldedLogger(&log.Fields{
75+
"component": "hq.listenMessages",
76+
}))
77+
continue
78+
}
79+
payload := bytes.TrimSpace(msg.Payload)
80+
if len(payload) == 0 {
81+
continue
82+
}
83+
84+
mType, err := dispatchMessageByType(payload)
6785
if err != nil {
6886
logger.Error("error dispatching message by type", "msg_type", mType, "err", err)
6987
continue

0 commit comments

Comments
 (0)