【发布时间】:2021-06-06 00:49:06
【问题描述】:
我使用 Go 实现 RPC 服务器。现在,我想使用 Node.js 编写客户端,如何从 Node.js 客户端向 Go 服务器进行 RPC 调用。
这是用 Go 编写的服务器代码。
server.go
package main
type HelloService struct{}
func (p *HelloService) Hello(request string, reply *string) error {
*reply = "Hello " + request
return nil
}
func main() {
rpc.RegisterName("HelloService", new(HelloService))
// run rpc on port 1234
listener, err := net.Listen("tcp", ":1234")
if err != nil {
log.Fatal("ListenTCP error: ", err)
}
// use for-while for serve client
for {
conn, err := listener.Accept()
log.Println("New connection: ", conn)
if err != nil {
log.Fatal("Accept error: ", err)
}
go rpc.ServeConn(conn)
}
}
【问题讨论】:
-
从你的协议缓冲区生成节点客户端。您需要使用相同的 protobuf 文件来生成服务器和客户端存根。 grpc.io/docs/languages/node/basics
-
@VijayKumar 有什么办法可以不用
grpc吗? -
您必须公开 gRPC 以外的其他方式与您的服务器通信。就像 REST 端点一样(有 grpc-gateway 可以为您做到这一点:github.com/grpc-ecosystem/grpc-gateway)
-
知道了,谢谢!