Skip to content

Repository files navigation

eventsource

eventsource provides server-sent events for net/http server.

Usage

SSE with default options

package main
import (
eventsource "github.com/antage/eventsource/http""log""net/http""strconv""time"
)
funcmain() {
es:=eventsource.New(nil, nil)
deferes.Close()
http.Handle("/events", es)
gofunc() {
id:=1for {
es.SendMessage("tick", "tick-event", strconv.Itoa(id))
id++time.Sleep(2*time.Second)
}
}()
log.Fatal(http.ListenAndServe(":8080", nil))
}

SSE with custom options

package main
import (
eventsource "github.com/antage/eventsource/http""log""net/http""strconv""time"
)
funcmain() {
es:=eventsource.New(
&eventsource.Settings{
Timeout: 5*time.Second,
CloseOnTimeout: false,
}, nil)
deferes.Close()
http.Handle("/events", es)
gofunc() {
id:=1for {
es.SendMessage("tick", "tick-event", strconv.Itoa(id))
id++time.Sleep(2*time.Second)
}
}()
log.Fatal(http.ListenAndServe(":8080", nil))
}

SSE with custom HTTP headers

package main
import (
eventsource "github.com/antage/eventsource/http""log""net/http""strconv""time"
)
funcmain() {
es:=eventsource.New(
eventsource.DefaultSettings(),
func(req*http.Request) [][]byte {
return [][]byte{
[]byte("X-Accel-Buffering: no"),
[]byte("Access-Control-Allow-Origin: *"),
}
},
)
deferes.Close()
http.Handle("/events", es)
gofunc() {
id:=1for {
es.SendMessage("tick", "tick-event", strconv.Itoa(id))
id++time.Sleep(2*time.Second)
}
}()
log.Fatal(http.ListenAndServe(":8080", nil))
}

About

Server-sent events for Go

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages