notifier/notifier.go

45 lines
769 B
Go

package notifier
import (
"gopkg.in/olahol/melody.v1"
)
type Notifier struct {
channel chan *Notification
Melody *melody.Melody
}
func NewNotifier(m *melody.Melody) *Notifier {
n := new(Notifier)
n.channel = make(chan *Notification)
n.Melody = m
return n
}
func (n *Notifier) Listen(then func(notification *Notification)) {
for {
select {
case noti := <-n.channel:
then(noti)
}
}
}
func (n *Notifier) Notify(collection, type_ string, data []byte) {
n.channel <- &Notification{
Collection: collection,
Type: type_,
Data: data,
}
}
func (n *Notifier) Close() {
close(n.channel)
}
type Notification struct {
Collection string `json:"collection"`
Type string `json:"type"`
Data []byte `json:"data,omitempty"`
}