The Wayback Machine - https://web.archive.org/web/20200920215147/https://github.com/tmc/grpc-websocket-proxy
Skip to content
master
Go to file
Code

Latest commit

Allow usage of the ping and pong handling of Gorilla websocket.
3cfed13

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

README.md

grpc-websocket-proxy

GoDoc

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.

Usage:

	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))

wsproxy

import "github.com/tmc/grpc-websocket-proxy/wsproxy"

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

Usage

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.

example:

Sec-Websocket-Protocol: Bearer, foobar

is converted to:

Authorization: Bearer foobar

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

About

A proxy to transparently upgrade grpc-gateway streaming endpoints to use websockets

Topics

Resources

License

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.