From 11069a6b848197d0d3d7ba527e9bf4ecd9037380 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Tue, 13 Jun 2023 20:14:27 -0400 Subject: web/revolt: start the process of writing a reconnection loop Signed-off-by: Xe Iaso --- web/revolt/client.go | 6 ++++++ web/revolt/websocket.go | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'web') diff --git a/web/revolt/client.go b/web/revolt/client.go index 353377b..76fe65c 100644 --- a/web/revolt/client.go +++ b/web/revolt/client.go @@ -5,6 +5,8 @@ import ( "encoding/json" "fmt" "net/http" + "sync" + "time" "github.com/sacOO7/gowebsocket" ) @@ -43,6 +45,10 @@ type Client struct { OnServerMemberUpdateFunctions []func(ctx context.Context, serverID, clear string, payload map[string]interface{}) OnServerMemberJoinFunctions []func(ctx context.Context, serverID, userID string) OnServerMemberLeaveFunctions []func(ctx context.Context, serverID, userID string) + + // ping timer + pingMutex sync.Mutex + lastPing time.Time } // Self bot struct. diff --git a/web/revolt/websocket.go b/web/revolt/websocket.go index c534d45..8ca78a9 100644 --- a/web/revolt/websocket.go +++ b/web/revolt/websocket.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "log" "net/http" "time" @@ -51,6 +50,12 @@ func (c *Client) Start(ctx context.Context) { // fmt.Println(message) } + c.Socket.OnDisconnected = func (err error, sock gowebsocket.Socket) { + ctx := opname.With(ctx, "websocket-ondisconnect") + ln.Error(ctx, err) + sock.Conn.Close() + } + // Start connection. c.Socket.Connect() @@ -329,7 +334,7 @@ func (c *Client) handleEvents(ctx context.Context, rawData *struct { i(ctx, data.ID, data.User) } default: - log.Printf("unknown event %s", rawData.Type) + ln.Log(ctx, ln.F{"unknown_event": rawData.Type}) // Unknown event. if c.OnUnknownEventFunctions != nil { for _, i := range c.OnUnknownEventFunctions { -- cgit v1.2.3