diff --git a/VERSION.go b/VERSION.go index 7ba826e..58dd79c 100644 --- a/VERSION.go +++ b/VERSION.go @@ -1,3 +1,3 @@ package main -const VERSION = "0.3.0" +const VERSION = "0.3.1" diff --git a/philote.go b/philote.go index 9a12171..c12c54e 100644 --- a/philote.go +++ b/philote.go @@ -8,10 +8,11 @@ import ( ) type Philote struct { - ID string - AccessKey *AccessKey - Hive *hive - ws *websocket.Conn + ID string + AccessKey *AccessKey + Hive *hive + ws *websocket.Conn + IncomingMessages chan *Message } func NewPhilote(ak *AccessKey, ws *websocket.Conn) (*Philote) { @@ -19,11 +20,23 @@ func NewPhilote(ak *AccessKey, ws *websocket.Conn) (*Philote) { ws: ws, ID: uuid.NewV4().String(), AccessKey: ak, + IncomingMessages: make(chan *Message), } + go p.DistributeIncomingMessages() + return p } +func (p *Philote) DistributeIncomingMessages() { + var message *Message + + for { + message = <- p.IncomingMessages + p.ws.WriteJSON(message) + } +} + func (p *Philote) Listen() { log.WithFields(log.Fields{"philote": p.ID}).Debug("Listening to Philote") for { @@ -69,9 +82,10 @@ func (p *Philote) publish(message *Message) { for _, channel := range philote.AccessKey.Read { if message.Channel == channel { - philote.ws.WriteJSON(message) + philote.IncomingMessages <- message break } } + } }