【发布时间】:2017-02-11 01:08:50
【问题描述】:
我正在使用 grpc go
我有一个大致像这样的 rpc
196 service MyService {
197 // Operation 1
198 rpc Operation1(OperationRequest) returns (OperationResponse) {
199 option (google.api.http) = {
200 post: "/apiver/myser/oper1"
201 body: "*"
202 };
203 }
客户端使用 grpc.Dial() 方法连接
当客户端连接时,服务器会做一些记录。当客户端断开连接时,需要删除簿记。
是否有任何可以注册的回调可以用来知道客户端已经关闭了会话。
【问题讨论】:
-
我自己还没有使用过 gRPC,但我很快就会使用,在我的研究过程中,我看到服务器接口方法传递了一个
ctx context.Context参数。我想假设如果与客户端的连接关闭,此上下文将被取消。见Go gRPC Basics -
感谢您的评论!!。我已经探索了
ctx.Done()选项。此通道在每次操作时关闭,在同一连接上。那不是我要找的。我正在寻找一个通道来读取连接关闭事件。 -
在我们的 rpc 应用程序中,我们定期使用 time.Ticker 进行轮询,调用状态函数,如果返回连接错误,我们从 master 端将 worker 标记为已死。不确定这是否适合您的用例。