Awesome Open Source
Awesome Open Source



Wrap your grpc-gateway mux with this helper to expose streaming endpoints over websockets.

On the wire this uses newline-delimited json encoding of the messages.


	mux := runtime.NewServeMux()
	opts := []grpc.DialOption{grpc.WithInsecure()}
	if err := echoserver.RegisterEchoServiceHandlerFromEndpoint(ctx, mux, *grpcAddr, opts); err != nil {
		return err
-	http.ListenAndServe(*httpAddr, mux)
+	http.ListenAndServe(*httpAddr, wsproxy.WebsocketProxy(mux))


import ""

Package wsproxy implements a websocket proxy for grpc-gateway backed services


var (
	MethodOverrideParam = "method"
	TokenCookieName     = "token"

func WebsocketProxy

func WebsocketProxy(h http.Handler) http.HandlerFunc

WebsocketProxy attempts to expose the underlying handler as a bidi websocket stream with newline-delimited JSON as the content encoding.

The HTTP Authorization header is either populated from the Sec-Websocket-Protocol field or by a cookie. The cookie name is specified by the TokenCookieName value.


Sec-Websocket-Protocol: Bearer, foobar

is converted to:

Authorization: Bearer foobar

Method can be overwritten with the MethodOverrideParam get parameter in the requested URL

Alternatives To Grpc Websocket Proxy
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Golang (172,446
Proxy (24,708
Websocket (14,270
Gateway (10,544
Streaming (9,750
Grpc (5,322
Grpc Gateway (151