diff options
author | Corey Hulen <corey@hulen.com> | 2015-12-16 13:43:02 -0800 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2015-12-16 13:43:02 -0800 |
commit | 791129de2fa7db22ee2b23b97d4040c288110e97 (patch) | |
tree | 5976a456548fce8beb79014c7c2780afeea89a8a /Godeps/_workspace/src/github.com/gorilla/websocket/examples | |
parent | f08deca79f24ff1efe086483a091cf807a5a2e14 (diff) | |
parent | f54936467101bb08bbdf7f3d9c341134c06b83c3 (diff) | |
download | chat-791129de2fa7db22ee2b23b97d4040c288110e97.tar.gz chat-791129de2fa7db22ee2b23b97d4040c288110e97.tar.bz2 chat-791129de2fa7db22ee2b23b97d4040c288110e97.zip |
Merge pull request #1742 from mattermost/update-golang-deps
Updating go dependancies
Diffstat (limited to 'Godeps/_workspace/src/github.com/gorilla/websocket/examples')
-rw-r--r-- | Godeps/_workspace/src/github.com/gorilla/websocket/examples/echo/client.go | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/Godeps/_workspace/src/github.com/gorilla/websocket/examples/echo/client.go b/Godeps/_workspace/src/github.com/gorilla/websocket/examples/echo/client.go index 45a023175..6578094e7 100644 --- a/Godeps/_workspace/src/github.com/gorilla/websocket/examples/echo/client.go +++ b/Godeps/_workspace/src/github.com/gorilla/websocket/examples/echo/client.go @@ -10,6 +10,8 @@ import ( "flag" "log" "net/url" + "os" + "os/signal" "time" "github.com/gorilla/websocket" @@ -21,6 +23,9 @@ func main() { flag.Parse() log.SetFlags(0) + interrupt := make(chan os.Signal, 1) + signal.Notify(interrupt, os.Interrupt) + u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo"} log.Printf("connecting to %s", u.String()) @@ -30,13 +35,16 @@ func main() { } defer c.Close() + done := make(chan struct{}) + go func() { defer c.Close() + defer close(done) for { _, message, err := c.ReadMessage() if err != nil { log.Println("read:", err) - break + return } log.Printf("recv: %s", message) } @@ -45,11 +53,29 @@ func main() { ticker := time.NewTicker(time.Second) defer ticker.Stop() - for t := range ticker.C { - err := c.WriteMessage(websocket.TextMessage, []byte(t.String())) - if err != nil { - log.Println("write:", err) - break + for { + select { + case t := <-ticker.C: + err := c.WriteMessage(websocket.TextMessage, []byte(t.String())) + if err != nil { + log.Println("write:", err) + return + } + case <-interrupt: + log.Println("interrupt") + // To cleanly close a connection, a client should send a close + // frame and wait for the server to close the connection. + err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + if err != nil { + log.Println("write close:", err) + return + } + select { + case <-done: + case <-time.After(time.Second): + } + c.Close() + return } } } |