ssevent.go 586 B

12345678910111213141516171819202122232425262728
  1. package render
  2. import (
  3. "net/http"
  4. "github.com/manucorporat/sse"
  5. )
  6. type sseRender struct{}
  7. var SSEvent Render = sseRender{}
  8. func (_ sseRender) Render(w http.ResponseWriter, code int, data ...interface{}) error {
  9. eventName := data[0].(string)
  10. obj := data[1]
  11. return WriteSSEvent(w, eventName, obj)
  12. }
  13. func WriteSSEvent(w http.ResponseWriter, eventName string, data interface{}) error {
  14. header := w.Header()
  15. if len(header.Get("Content-Type")) == 0 {
  16. header.Set("Content-Type", "text/event-stream")
  17. }
  18. return sse.Encode(w, sse.Event{
  19. Event: eventName,
  20. Data: data,
  21. })
  22. }