summaryrefslogtreecommitdiff
path: root/websock.go
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2014-03-27 12:28:05 +0100
committerKevin Chabowski <kevin@kch42.de>2014-03-27 23:51:07 +0100
commitdfd11c94c1ad5261caa43128a39fcce550edf61d (patch)
treeb80458e610077b17da9815d14f71f590d4de56af /websock.go
parentc35e43e9cf0f915236016a3f73a6ee6bc9962e0b (diff)
downloadsimplechat-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.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/websock.go b/websock.go
index bf4fabd..9734e65 100644
--- a/websock.go
+++ b/websock.go
@@ -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)