Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions internal/gotty/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (c *Client) Connect() error {
wsDialer := websocket.Dialer{}
conn, _, err := wsDialer.Dial(c.wsURL, nil)
if err != nil {
return err
return fmt.Errorf("failed to dial websocket: %w", err)
}
defer func() {
// Websocket protocol require the server to close the connection.
Expand All @@ -58,7 +58,7 @@ func (c *Client) Connect() error {
"Arguments": "?" + url.Values{"arg": []string{c.secretKey, c.serverID}}.Encode(),
})
if err != nil {
return err
return fmt.Errorf("failed to send auth json: %w", err)
}

cns, err := console.ConsoleFromFile(os.Stdin)
Expand Down Expand Up @@ -94,7 +94,7 @@ func (c *Client) Connect() error {
message := fmt.Sprintf(`%c{"columns":%d,"rows":%d}`, resizeTerminalCode, size.Width, size.Height)
err = conn.WriteMessage(websocket.TextMessage, []byte(message))
if err != nil {
return err
return fmt.Errorf("failed to write message on websocket: %w", err)
}

// We receive a message from the server
Expand All @@ -109,7 +109,7 @@ func (c *Client) Connect() error {
case outputCode:
buf, err := base64.StdEncoding.DecodeString(string(message[1:]))
if err != nil {
return err
return fmt.Errorf("failed to decode base64 output payload: %w", err)
}
os.Stdout.Write(buf)
// The message contain a new terminal title
Expand All @@ -128,21 +128,21 @@ func (c *Client) Connect() error {
}
err = conn.WriteMessage(websocket.TextMessage, append([]byte{inputCode}, message...))
if err != nil {
return err
return fmt.Errorf("failed to write message on websocket: %w", err)
}

// We make sure to send a ping every 30s to keep the connection alive.
case <-time.After(30 * time.Second):
err = conn.WriteMessage(websocket.TextMessage, []byte{pingCode})
if err != nil {
return err
return fmt.Errorf("failed to ping websocket: %w", err)
}

// If we receive an error from one of the 2 reader we return it
case err := <-wsErrChan:
return err
return fmt.Errorf("websocket reader error: %w", err)
case err := <-cnsErrChan:
return err
return fmt.Errorf("console reader error: %w", err)
}
}
}
Expand Down