From 5fd573326133011aee9ba802e00cd91eec53c8ef Mon Sep 17 00:00:00 2001 From: Martin/Geno Date: Thu, 26 Apr 2018 21:24:42 +0200 Subject: [PATCH] websocket: add SendAll --- websocket/server.go | 8 ++++++++ websocket/server_test.go | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/websocket/server.go b/websocket/server.go index 3a9d70f..aca7e25 100644 --- a/websocket/server.go +++ b/websocket/server.go @@ -66,3 +66,11 @@ func (s *Server) DelClient(c *Client) { } } } + +func (s *Server) SendAll(msg *Message) { + s.clientsMutex.Lock() + defer s.clientsMutex.Unlock() + for _, c := range s.clients { + c.Write(msg) + } +} diff --git a/websocket/server_test.go b/websocket/server_test.go index fa2b972..af0f733 100644 --- a/websocket/server_test.go +++ b/websocket/server_test.go @@ -5,6 +5,8 @@ import ( "net/http/httptest" "testing" + "github.com/google/uuid" + "github.com/stretchr/testify/assert" ) @@ -31,3 +33,45 @@ func TestServer(t *testing.T) { srv.DelClient(nil) srv.DelClient(c) } + +func TestServerSendAll(t *testing.T) { + assert := assert.New(t) + srv := NewServer(nil, nil) + assert.NotNil(srv) + + out1 := make(chan *Message) + c1 := &Client{ + id: uuid.New(), + out: out1, + server: srv, + } + + out2 := make(chan *Message) + c2 := &Client{ + id: uuid.New(), + out: out2, + server: srv, + } + srv.AddClient(c1) + srv.AddClient(c2) + + go func() { + + msg := <-out1 + assert.Equal("hi", msg.Subject) + + }() + go func() { + + msg := <-out2 + assert.Equal("hi", msg.Subject) + + }() + + srv.SendAll(&Message{ + Subject: "hi", + }) + + srv.DelClient(c2) + srv.DelClient(c1) +}