Skip to content

Commit e479ec9

Browse files
committed
Reconnect to same session instead of recreating on connection loss
- Remove wasConnected/recreateSession from main reconnect loop - Always attempt reconnection with existing session_id and token - Only recreate session when relay explicitly rejects with error
1 parent d7d2be5 commit e479ec9

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

websocket.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,7 @@ import (
1111

1212
// connectToRelay connects to the WebSocket relay
1313
func (d *Daemon) connectToRelay() {
14-
wasConnected := false
1514
for {
16-
// After a successful connection was lost, the relay deleted our session.
17-
// Create a new one before reconnecting.
18-
if wasConnected {
19-
wasConnected = false
20-
for {
21-
if err := d.recreateSession(); err == nil {
22-
break
23-
}
24-
time.Sleep(RelayConnectDelay)
25-
}
26-
}
27-
2815
wsURL := d.relay + "/ws/" + d.session + "?role=bridge&pc_id=" + d.pcConfig.PCID
2916
conn, _, err := websocket.DefaultDialer.Dial(wsURL, nil)
3017
if err != nil {
@@ -41,14 +28,24 @@ func (d *Daemon) connectToRelay() {
4128
continue
4229
}
4330

31+
// If relay rejects (session expired/cleaned up), recreate session
32+
if response.Type == "error" {
33+
conn.Close()
34+
for {
35+
if err := d.recreateSession(); err == nil {
36+
break
37+
}
38+
time.Sleep(RelayConnectDelay)
39+
}
40+
continue
41+
}
42+
4443
if response.Type != "registered" {
4544
conn.Close()
4645
time.Sleep(RelayConnectDelay)
4746
continue
4847
}
4948

50-
wasConnected = true
51-
5249
// Set read deadline: if no message within 3 ping intervals, connection is dead
5350
conn.SetReadDeadline(time.Now().Add(PingInterval * 3))
5451

0 commit comments

Comments
 (0)