Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit 045145b

Browse files
authored
Merge pull request #50 from cdr/fix-shell-kick
Add heartbeat
2 parents 6f726cd + 709f1a6 commit 045145b

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

cmd/coder/shell.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"golang.org/x/sys/unix"
1313
"golang.org/x/time/rate"
1414
"golang.org/x/xerrors"
15+
"nhooyr.io/websocket"
1516

1617
"go.coder.com/cli"
1718
"go.coder.com/flog"
@@ -126,6 +127,7 @@ func runCommand(ctx context.Context, envName string, command string, args []stri
126127
if err != nil {
127128
return err
128129
}
130+
go heatbeat(ctx, conn, 15*time.Second)
129131

130132
execer := wsep.RemoteExecer(conn)
131133
process, err := execer.Start(ctx, wsep.Command{
@@ -172,4 +174,21 @@ func runCommand(ctx context.Context, envName string, command string, args []stri
172174
return err
173175
}
174176

177+
func heatbeat(ctx context.Context, c *websocket.Conn, interval time.Duration) {
178+
ticker := time.NewTicker(interval)
179+
defer ticker.Stop()
180+
181+
for {
182+
select {
183+
case <-ctx.Done():
184+
return
185+
case <-ticker.C:
186+
err := c.Ping(ctx)
187+
if err != nil {
188+
flog.Error("failed to ping websocket: %v", err)
189+
}
190+
}
191+
}
192+
}
193+
175194
const sshActivityName = "ssh"

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module cdr.dev/coder-cli
33
go 1.14
44

55
require (
6-
cdr.dev/wsep v0.0.0-20200615020153-e2b1c576fc40
6+
cdr.dev/wsep v0.0.0-20200616212001-0613cfe9a4ac
77
github.com/fatih/color v1.9.0 // indirect
88
github.com/gorilla/websocket v1.4.1
99
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f
@@ -16,7 +16,7 @@ require (
1616
go.coder.com/flog v0.0.0-20190906214207-47dd47ea0512
1717
golang.org/x/crypto v0.0.0-20200422194213-44a606286825
1818
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a
19-
golang.org/x/sys v0.0.0-20200610111108-226ff32320da
19+
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1
2020
golang.org/x/time v0.0.0-20191024005414-555d28b269f0
2121
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
2222
nhooyr.io/websocket v1.8.6

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ cdr.dev/slog v1.3.0 h1:MYN1BChIaVEGxdS7I5cpdyMC0+WfJfK8BETAfzfLUGQ=
22
cdr.dev/slog v1.3.0/go.mod h1:C5OL99WyuOK8YHZdYY57dAPN1jK2WJlCdq2VP6xeQns=
33
cdr.dev/wsep v0.0.0-20200615020153-e2b1c576fc40 h1:f369880iSAZ3cXwvbdc9WIyy3FZ4yanusYZjaVHeis4=
44
cdr.dev/wsep v0.0.0-20200615020153-e2b1c576fc40/go.mod h1:2VKClUml3gfmLez0gBxTJIjSKszpQotc2ZqPdApfK/Y=
5+
cdr.dev/wsep v0.0.0-20200616212001-0613cfe9a4ac h1:rl4O0qfxgNRWBUe5gQu4of2cdsclcpjGYmLQhSCHX7c=
6+
cdr.dev/wsep v0.0.0-20200616212001-0613cfe9a4ac/go.mod h1:2VKClUml3gfmLez0gBxTJIjSKszpQotc2ZqPdApfK/Y=
57
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
68
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
79
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -240,6 +242,8 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w
240242
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
241243
golang.org/x/sys v0.0.0-20200610111108-226ff32320da h1:bGb80FudwxpeucJUjPYJXuJ8Hk91vNtfvrymzwiei38=
242244
golang.org/x/sys v0.0.0-20200610111108-226ff32320da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
245+
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80=
246+
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
243247
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
244248
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
245249
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=

0 commit comments

Comments
 (0)