草庐IT

client_grpc_app

全部标签

google-app-engine - 在 Go 中部署到 Google App Engine Standard 时如何获取 RemoteAddr(远程 IP 地址)

我想获取客户端/浏览器IP地址以限制我的GoogleAppEngineStandard/Go网络应用程序中未经身份验证的客户端。在已部署的应用程序中,r.RemoteAddr返回空字符串。枚举请求header(r.Header[string][]string)仅提供以下条目。Content-LengthX-Appengine-CitylatlongX-Appengine-RegionUpgrade-Insecure-RequestsAccept-LanguageX-Cloud-Trace-ContextX-Appengine-CountryX-Appengine-CityHostCac

google-app-engine - 如何在 Google App Engine Standard Env for Go 中获取 request.RemoteAddr 和 X-AppEngine-Country、Region 等的输出?

我有一个在GoogleAppEngine标准环境中运行的服务,该服务是用Go编写的,配置为在部署时使用最新的运行时(api_version:go1-当前为Go1.8)。在这项服务中,我出于各种目的检查请求header。funcextractHeaders(reshttp.ResponseWriter,req*http.Request){ctx:=appengine.NewContext(req)clientIPAddress,_,_:=net.SplitHostPort(req.RemoteAddr)//Outputisblankcountry:=req.Header.Get("X-A

http - 在 App Engine 的灵活环境中发出 HTTP Get 请求

我在AppEngine中使用FlexibleEnvironment我想在我的代码中发送HTTPGet请求。ctx:=appengine.NewContext(r)client:=urlfetch.Client(ctx)req,err:=http.NewRequest("GET","https://www.google.com/",nil)res,err:=client.Do(req)iferr!=nil{http.Error(w,err.Error(),http.StatusInternalServerError)return}fmt.Fprintf(w,"HTTPGETreturne

sockets - golang grpc 套接字调整

我有一个golang客户端应用程序通过GRPC与服务器通信。我注意到,在应用程序运行时,客户端应用程序上累积的套接字数量一直在攀升,直到9000左右。此时我暂停了客户端。然而,在客户端和服务器之间不再有流量之后,即使在8小时后,套接字数量仍保持在该水平。我们是否可以针对套接字使用调整GRPC?比如超时后关闭套接字?使用流式传输是否是另一种限制打开的套接字数量的方法?感谢您的帮助。 最佳答案 我首先要确保您的客户端应用程序通过调用Close()方法清除未使用的连接(grpc.ClientConn)。此外,由于我不知道您的应用程序究竟做

go - Cloud EndPoint GRPC 不匹配原型(prototype)定义

我正在使用GoogleCloudEndPoints访问以GoLang编写并在Kuberkules中运行的GRPC服务器。我正在关注here的教程.一切正常,但当我尝试请求时出现此错误rpc错误:code=NotFounddesc=方法不存在。EndPoint没有保存URL在我的原型(prototype)文件中有一个,名称中包含包。这是一个例子:logrequest在最后一个请求中,我更改了生成的protobuf文件中url的值,它通过了端点,但我的服务器不识别它......我得到了这个错误:rpcerror:code=Unimplementeddesc=unknownservicecl

go - 如何从 gRPC 获取方法扩展

我正在使用拦截器根据在传入和传出RPC上的RPC上设置的可选扩展执行额外验证。给定以下gRPC架构:extendgoogle.protobuf.MethodOptions{stringmy_option=50006;}serviceMyService{rpcFoo(FooRequest)returns(FooResponse){option(my_option)="foo"}}如何获取my_option的值?起初我想使用this从请求中获取它.但是,由于这是一个MethodOptions,它似乎不是描述符的一部分。想法? 最佳答案

go - 为什么 App Engine Flexible Enviroment 不允许 WebSockets 和 HTTP/2 流量?

我对WebSocket更感兴趣,但在阅读文档之后here,当我读到这篇文章时,我感到很惊讶:ThefollowingfeaturesarenotsupportedbyAppEngineflexibleenvironment:HTTP/2traffictothebackendservice,Websockets,HTTPrequeststhatdirectlyaccessinstances我打算用gorilla-websocket构建一个应用程序,但现在我已经阅读了这篇文章,但我不知道如何才能完成它。我了解WebSocket在AppEngine标准环境中不受支持,但为什么在灵活环境中不支

go - 如何在 Go 中发布 http.Client?

我为HTTP2连接构建了一个http.Client,我需要做什么来释放客户端和使用的资源? 最佳答案 http.Client不需要任何特殊方式来释放“已用”资源。当它变得不可访问时,它使用的内存将被垃圾收集器回收。http.Client不存储连接或状态信息。文档甚至指出http.Client应该被重用:TheClient'sTransporttypicallyhasinternalstate(cachedTCPconnections),soClientsshouldbereusedinsteadofcreatedasneeded.C

go - 如何在grpc服务器端使用从客户端传递过来的上下文

我已经在grpc服务中定义了一个端点。现在,当客户端使用某些上下文调用端点时,我应该如何处理该上下文、它的到期/截止日期等?我的意思是在服务端,我要执行一系列的步骤来完成请求。它包括一些处理、写入数据存储等。现在我应该如何尊重上下文。是不是在流程的每一步之后,我都需要检查上下文是否完成?如果完成了,我就直接返回而不进行下一步?但这感觉不对。在GRPC/Go中正确的做法是什么? 最佳答案 服务处理程序获取的上下文中设置了截止日期(客户端设置的截止日期)。Go的方式是在您的每一步中传递该上下文,如果这些步骤中的任何一个阻塞,您也会在该上

http - 更改 http.Client cookie 值

我有以下代码可以按预期工作,但是在第一次请求时,我有我想要的cookie,并且只想在发送另一个请求之前更改1个cookie的值。到目前为止,我一直很不成功。jar,err:=cookiejar.New(&cookiejar.Options{PublicSuffixList:publicsuffix.List})iferr!=nil{log.Fatal(err)}client=&http.Client{Jar:jar,}firstRequest()//akaloginmainLinkedinURL:="http://www.example.com/"cookieURL,_:=url.Pa