relay-server/grpcserver/server.go
2025-12-23 16:38:32 +03:00

37 lines
771 B
Go

package grpcserver
import (
"crypto/tls"
"log"
"net"
"time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/keepalive"
controlpb "relay/proto/control"
tunnelpb "relay/proto/tunnel"
)
func Serve(addr string, tlsCfg *tls.Config) {
grpcServer := grpc.NewServer(
grpc.Creds(credentials.NewTLS(tlsCfg)),
grpc.KeepaliveParams(keepalive.ServerParameters{
Time: 30 * time.Second,
Timeout: 10 * time.Second,
}),
)
tunnelpb.RegisterTunnelServiceServer(grpcServer, &TunnelServiceImpl{})
controlpb.RegisterControlServiceServer(grpcServer, &ControlServiceImpl{})
ln, err := net.Listen("tcp", addr)
if err != nil {
log.Fatal(err)
}
log.Println("gRPC listening on", addr)
log.Fatal(grpcServer.Serve(ln))
}