not close ch, because send data to closed channel will panic

master
codeskyblue 8 years ago
parent 19ff4cbef3
commit 936a83b115

@ -42,6 +42,12 @@ func (b *BroadcastString) AddListener(c chan string) chan string {
return c
}
func (b *BroadcastString) RemoveListener(c chan string) {
b.mu.Lock()
defer b.mu.Unlock()
delete(b.writers, c)
}
type BufferBroadcast struct {
bs *BroadcastString

@ -19,7 +19,7 @@ body {
}
.realtime-log {
height: 50em;
height: 40em;
}
.status {

@ -64,7 +64,6 @@ func (s *Supervisor) stopAndWait(name string) error {
return nil
}
c := make(chan string, 0)
defer func() { close(c) }()
s.addStatusChangeListener(c)
p.Operate(StopEvent)
for {
@ -335,7 +334,7 @@ func (s *Supervisor) wsEvents(w http.ResponseWriter, r *http.Request) {
// Question: type 1 ?
c.WriteMessage(1, []byte(message))
}
close(ch)
s.eventB.RemoveListener(ch)
}()
for {
mt, message, err := c.ReadMessage()

Loading…
Cancel
Save