ssevent.go 671 B

12345678910111213141516171819202122232425262728293031
  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", sse.ContentType)
  17. }
  18. if len(header.Get("Cache-Control")) == 0 {
  19. header.Set("Cache-Control", "no-cache")
  20. }
  21. return sse.Encode(w, sse.Event{
  22. Event: eventName,
  23. Data: data,
  24. })
  25. }