Skip to content

Separate handle of streaming timeout settings #879

@catchv

Description

@catchv

feature request

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

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions