Categorygithub.com/factorysh/go-longrun
module
0.1.0
Repository: https://github.com/factorysh/go-longrun.git
Documentation: pkg.go.dev

# README

Long run

Golang implementation for long run

Long run is just a Server Sent Event normalization for REST API that stream response.

Server

mux := http.NewServeMux()

runs := run.New(30 * time.Second)
h := rest.NewHandler(runs, "/user", func(r *run.Run, req *http.Request, arg map[string]interface{}) {
	r.Run(arg["name"])
	time.Sleep(100 * time.Millisecond)
	r.Success(nil)
})
mux.Handle("/user/", h)

You action are is a function : func(r *run.Run, req *http.Request, arg map[string]interface{}. Arguments came from JSON, and you can stream the response with the run.Run instance and JSON values.

Client

Its a POST request, with a redirection to a GET SSE response.

req, err := http.NewRequest("POST", server.URL+"/user/", bytes.NewBuffer([]byte(`{"name": "Charly"}`)))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("accept", "text/event-stream") // Explicit event-stream
resp, err := client.Do(req) // golang http client handles the redirection
eventsReader, err := Longrun(resp)
for {
	evt, err := eventsReader.Read() // Reading an event
	if err == io.EOF { // Until the end
		break
	}
	fmt.Println("Read event: ", evt)
}

Licence

3 terms BSD licence. © 2019 Mathieu Lecarme.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author