diff options
author | Kevin Chabowski <kevin@kch42.de> | 2014-03-27 12:28:05 +0100 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2014-03-27 23:51:07 +0100 |
commit | dfd11c94c1ad5261caa43128a39fcce550edf61d (patch) | |
tree | b80458e610077b17da9815d14f71f590d4de56af /websock.go | |
parent | c35e43e9cf0f915236016a3f73a6ee6bc9962e0b (diff) | |
download | simplechat-dfd11c94c1ad5261caa43128a39fcce550edf61d.tar.gz simplechat-dfd11c94c1ad5261caa43128a39fcce550edf61d.tar.bz2 simplechat-dfd11c94c1ad5261caa43128a39fcce550edf61d.zip |
Chat now works on the client side
Diffstat (limited to 'websock.go')
-rw-r--r-- | websock.go | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -43,11 +43,13 @@ func AcceptWebSock(rw http.ResponseWriter, req *http.Request) { return } + exit := make(chan struct{}) + go func() { var s string for { if websocket.Message.Receive(ws, &s) != nil { - return + break } if s == "" { @@ -56,11 +58,18 @@ func AcceptWebSock(rw http.ResponseWriter, req *http.Request) { buddy.Say(s) } + + exit <- struct{}{} }() - for m := range buddy.Receive { - if send(m) != nil { + for { + select { + case <-exit: return + case m := <-buddy.Receive: + if send(m) != nil { + return + } } } }).ServeHTTP(rw, req) |