diff --git a/src/server/message.go b/src/server/message.go index 0b4c2e9..166c86c 100644 --- a/src/server/message.go +++ b/src/server/message.go @@ -1,9 +1,10 @@ package server type message struct { - Text string - Pitch int - Rate float64 - VoiceIdx int - room string + Text string + QuietText string + Pitch int + Rate float64 + VoiceIdx int + room string } diff --git a/src/server/server.go b/src/server/server.go index 1461587..f66107c 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -1,6 +1,7 @@ package server import ( + "fmt" "log" "net/http" ) @@ -31,9 +32,6 @@ func (s *Server) WS(w http.ResponseWriter, r *http.Request) error { } defer sess.Close() - log.Println("someone has joined", sess.room) - defer log.Println("someone has left", sess.room) - sess.cb = func(m message) error { for i := range s.sessions { if s.sessions[i].id != sess.id && s.sessions[i].room == sess.room { @@ -46,8 +44,42 @@ func (s *Server) WS(w http.ResponseWriter, r *http.Request) error { return nil } - s.sessions = append(s.sessions, sess) + func() { + s.sessions = append(s.sessions, sess) + + n := 0 + for i := range s.sessions { + if s.sessions[i].room == sess.room { + n += 1 + } + } + for i := range s.sessions { + if s.sessions[i].room == sess.room { + if s.sessions[i].id == sess.id { + s.sessions[i].scatterc <- message{QuietText: fmt.Sprintf("you have joined %v people", n-1)} + } else { + s.sessions[i].scatterc <- message{QuietText: fmt.Sprintf("there is now %v people", n)} + } + } + } + }() defer func() { + n := 0 + for i := range s.sessions { + if s.sessions[i].room == sess.room { + n += 1 + } + } + n -= 1 + for i := range s.sessions { + if s.sessions[i].room == sess.room { + if s.sessions[i].id == sess.id { + } else { + s.sessions[i].scatterc <- message{QuietText: fmt.Sprintf("there is now %v people", n)} + } + } + } + for i := range s.sessions { if s.sessions[i].id == sess.id { s.sessions = append(s.sessions[:i], s.sessions[i+1:]...)