Skip to content

Commit 826e0c9

Browse files
authored
Merge pull request #2 from raiden-staging/master
Keepalive fix cleanup [neko]
2 parents 23f2dd9 + ac27835 commit 826e0c9

File tree

8 files changed

+35
-9
lines changed

8 files changed

+35
-9
lines changed

server/internal/http/legacy/event/events.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ const (
44
SYSTEM_INIT = "system/init"
55
SYSTEM_DISCONNECT = "system/disconnect"
66
SYSTEM_ERROR = "system/error"
7+
SYSTEM_HEARTBEAT = "system/heartbeat"
8+
SYSTEM_PONG = "system/pong"
79
)
810

911
const (

server/internal/http/legacy/message/messages.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ type SystemMessage struct {
2424
Message string `json:"message"`
2525
}
2626

27+
type SystemPong struct {
28+
Event string `json:"event"`
29+
Timestamp string `json:"timestamp"`
30+
}
31+
2732
type SignalProvide struct {
2833
Event string `json:"event"`
2934
ID string `json:"id"`

server/internal/http/legacy/wstobackend.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"encoding/json"
55
"fmt"
66
"net/http"
7-
7+
"strconv"
8+
"time"
9+
810
"github.com/pion/webrtc/v3"
911

1012
oldEvent "github.com/m1k1o/neko/server/internal/http/legacy/event"
@@ -28,8 +30,10 @@ func (s *session) wsToBackend(msg []byte) error {
2830
switch header.Event {
2931
// Client Events
3032
case oldEvent.CLIENT_HEARTBEAT:
31-
// do nothing
32-
return nil
33+
return s.toClient(&oldMessage.SystemPong{
34+
Event: oldEvent.SYSTEM_PONG,
35+
Timestamp: strconv.FormatInt(time.Now().UnixMilli(), 10),
36+
})
3337

3438
// Signal Events
3539
case oldEvent.SIGNAL_OFFER:

server/internal/websocket/handler/handler.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package handler
22

33
import (
4-
"time"
54
"github.com/rs/zerolog"
65
"github.com/rs/zerolog/log"
76

@@ -39,9 +38,7 @@ func (h *MessageHandlerCtx) Message(session types.Session, data types.WebSocketM
3938
switch data.Event {
4039
// Client Events
4140
case event.CLIENT_HEARTBEAT:
42-
session.Send("system/heartbeat", map[string]any{
43-
"timestamp": time.Now(),
44-
})
41+
err = h.systemPong(session)
4542

4643
// System Events
4744
case event.SYSTEM_LOGS:
@@ -196,6 +193,7 @@ func (h *MessageHandlerCtx) Message(session types.Session, data types.WebSocketM
196193
return h.sendBroadcast(session, payload)
197194
})
198195
default:
196+
err = h.systemPong(session)
199197
return false
200198
}
201199

server/internal/websocket/handler/system.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package handler
22

33
import (
4+
"time"
45
"github.com/rs/zerolog"
56
"github.com/rs/zerolog/log"
67

@@ -94,3 +95,13 @@ func (h *MessageHandlerCtx) systemLogs(session types.Session, payload *message.S
9495

9596
return nil
9697
}
98+
99+
func (h *MessageHandlerCtx) systemPong(session types.Session) error {
100+
session.Send(
101+
event.SYSTEM_PONG,
102+
message.SystemPong{
103+
Timestamp: time.Now().UnixMilli(),
104+
},
105+
)
106+
return nil
107+
}

server/internal/websocket/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ var nologEvents = []string{
3232
// don't log twice
3333
event.SYSTEM_LOGS,
3434
// don't log heartbeats
35-
event.SYSTEM_HEARTBEAT,
36-
event.CLIENT_HEARTBEAT,
35+
// event.CLIENT_HEARTBEAT,
36+
// event.SYSTEM_PONG,
3737
// don't log every cursor update
3838
event.SESSION_CURSORS,
3939
}

server/pkg/types/event/events.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const (
77
SYSTEM_LOGS = "system/logs"
88
SYSTEM_DISCONNECT = "system/disconnect"
99
SYSTEM_HEARTBEAT = "system/heartbeat"
10+
SYSTEM_PONG = "system/pong"
1011
)
1112

1213
const (

server/pkg/types/message/messages.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ type SystemSettingsUpdate struct {
4747
types.Settings
4848
}
4949

50+
// SystemPong is sent by the server as a direct response to CLIENT_HEARTBEAT
51+
type SystemPong struct {
52+
Timestamp int64 `json:"timestamp"` // Unix ms
53+
}
54+
5055
/////////////////////////////
5156
// Signal
5257
/////////////////////////////

0 commit comments

Comments
 (0)