ekster/cmd/eksterd/events.go
Peter Stuifzand f0bdae1855
All checks were successful
the build was successful
Add missing file
2018-09-08 19:59:49 +02:00

42 lines
799 B
Go

package main
import (
"encoding/json"
"fmt"
"net"
"p83.nl/go/ekster/pkg/microsub"
)
type Consumer struct {
conn net.Conn
output chan microsub.Message
}
func newConsumer(conn net.Conn) *Consumer {
cons := &Consumer{conn, make(chan microsub.Message)}
fmt.Fprint(conn, "HTTP/1.0 200 OK\r\n")
fmt.Fprint(conn, "Content-Type: text/event-stream\r\n")
fmt.Fprint(conn, "Access-Control-Allow-Origin: *\r\n")
fmt.Fprint(conn, "\r\n")
go func() {
for msg := range cons.output {
fmt.Fprint(conn, `event: ping`)
fmt.Fprint(conn, "\r\n")
fmt.Fprint(conn, `data:`)
json.NewEncoder(conn).Encode(msg)
fmt.Fprint(conn, "\r\n")
fmt.Fprint(conn, "\r\n")
}
conn.Close()
}()
return cons
}
func (cons *Consumer) WriteMessage(evt microsub.Event) {
cons.output <- evt.Msg
}