grpcproxy

module
v0.0.0-...-a8fef42 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2024 License: CC0-1.0

README

About

Go Reference Go Report Card

This is a gRPC server and a client that allows to proxy network connections via the server.

How to use

Server-side

Let's say you already have a gRPC server written in Go, something like this:

	grpcServer := grpc.NewServer()
	myFancyService := myfancyservice.New()
	myFancyService_grpc.RegisterMyFancyServiceServer(grpcServer, myFancyService)

To add the proxy capability you just need to register the proxy service as well:

import "github.com/xaionaro-go/grpcproxy/grpcproxyserver"
import "github.com/xaionaro-go/grpcproxy/protobuf/go/proxy_grpc"

	grpcServer := grpc.NewServer()
	myFancyService := myfancyservice.New()
	myfancyservice_grpc.RegisterMyFancyServiceServer(grpcServer, myFancyService)

	proxyServer := grpcproxyserver.New()
	proxy_grpc.RegisterNetworkProxyServer(grpcServer, proxyServer)

Client-side

On the client side you may replace a direct connection:

conn, err := net.Dial("tcp", addr)

with proxied connection:

conn, err := grpchttpproxy.NewDialer(myGRPCClient).DialContext(ctx, "tcp", addr)

Or if you need to proxy an HTTP request, you may make an HTTP client:

	httpClient := &http.Client{
		Transport: &http.Transport{
			DialContext: grpchttpproxy.NewDialer(myGRPCClient).DialContext,
		},
	}

And then perform the HTTP requests via this client

Directories

Path Synopsis
protobuf

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL