有没有办法在连接的套接字net.conn上构建一个grpc服务器?

Is there a way to construct a grpc server on a connected socket net.conn?

go中的典型用法是:

    server := grpc.NewServer()
    
    pb.RegisterUserServer(server, &userSrvc.UserServer{})

    addr := ":" + env.GetMyRpcPort()

    lis, _ := net.Listen("tcp", addr)

    server.Serve(lis)

我想知道我可以 运行 连接连接上的服务器,例如:

conn, _ := net.Dial("tcp",":8080")
server.Serve(conn)

客户端先连接到服务器,然后在连接上构建一个grpc服务器net.conn,然后服务器可以rpc调用客户端向客户端推送一些消息作为请求。

我认为你需要 bidirectional streaming。 这是在 Go 中使用双向 GRPC 的一个详细示例:https://github.com/pahanini/go-grpc-bidirectional-streaming-example.

conn, err := grpc.Dial(":50005", grpc.WithInsecure())
...
client := pb.NewMathClient(conn)
stream, err := client.Max(context.Background())
...
req := pb.Request{Num: rnd}
err := stream.Send(&req)