所以我使用的是一个mux,它将确定传入的请求类型(gRPC或REST)并相应地路由请求。对于gRPC请求,我附加了一个stats处理程序来收集一些元数据,但我们用来标记元数据的接口方法之一TagRPC()
没有被调用。
app.httpMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if isgRPC(r) {
app.gRPCServer.ServeHTTP(w, r)
} else {
app.rMux.ServeHTTP(w, r)
}
})
我认为问题在于gRPC的ServeHTTP方法不支持所有方法。如果我要手动附加TagGRPC()
,那么这将是一个好地方吗?
答案 0 :(得分:1)
stats处理程序在ServeHTTP Handler中并不完全支持。
https://github.com/grpc/grpc-go/issues/1784
中的更多详情(我刚刚注意到你也提出了这个问题,但这可能有助于其他人也对此感兴趣)