-
Notifications
You must be signed in to change notification settings - Fork 133
Open
Labels
enhancementNew feature or requestNew feature or request
Description
feature request
- http.Server{ WriteTimeout: } is set as the timeout for all handlers.
- https://connectrpc.com/docs/go/deployment#timeouts-and-connection-pools
- net/http: no way of manipulating timeouts in Handler golang/go#16100
- http.NewResponseController is supported starting with Go 1.20.
solve
- Introduce a timeout option when creating a New~ServiceHandler in generate.
(HandlerOption SetTimeout)
sample code
func NewGreetStreamServiceHandler(svc GreetStreamServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
greetStreamServiceMethods := v1.File_greet_v1_greet_proto.Services().ByName("GreetStreamService").Methods()
greetStreamServiceGreetStreamHandler := connect.NewClientStreamHandler(
GreetStreamServiceGreetStreamProcedure,
svc.GreetStream,
connect.WithSchema(greetStreamServiceMethods.ByName("GreetStream")),
connect.WithHandlerOptions(opts...),
)
return "/greet.v1.GreetStreamService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case GreetStreamServiceGreetStreamProcedure:
// ************************************************
// NewResponseController Set Timeout
rc := http.NewResponseController(w)
rc.SetWriteDeadline(time.Now().Add(20 * time.Second))
// ************************************************
greetStreamServiceGreetStreamHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
})
}
Thanks.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request