go startGrpcGataway() 运行

来源:3-4 GRPC Gateway的实现

jiugemei

2021-06-26 03:01:44

go startGrpcGataway() 运行代码  浏览器访问 http://localhost:8080/trip/1231

浏览器报错 ERR_CONNECTION_REFUSED


去除 go 关键词 之后浏览器 访问 http://localhost:8080/trip/1231 正常返回结果


写回答

5回答

becky_wang

2021-07-11

你这个代码抄混了  你贴的这个main函数里不应该是客户端的  应该是开启trip的grpc服务以及开启gateway的服务

0
hiugemei
hp>没有混的,这里我理解的是老师的一个技巧,想起两个服务的

h021-07-11
共1条回复

becky_wang

2021-07-11

你的这个main函数既做了服务端也做了客户端  不知道你这样设计的意思是啥

0

vastyang

2021-07-06

同学,我起初遇到跟你一样的问题了,后来我检查发现代码没有重新运行,囧~

0

ccmouse

2021-06-27

我又仔细看了下,去除 go 关键词能返回正常结果?去除的话应该卡在startGrpcGateway处,后面的GRPC服务开不出来,应该能获得结果,但也不会是正常的。贴一下完整代码吧。

0
hcmouse
回复
hiugemei
hp>加了go以后,你的main函数就会往下走,发了一个tcp并打印结果以后就退出了。main函数一旦退出,所有的goroutine都会被杀掉,你的程序也就退出了。所以之后再使用浏览器就无法访问。

反之,去掉go以后,程序会起一个grpc gateway服务器,并且进行监听,逻辑会卡在startGrpcGataway里面。这也是我们希望的,服务器一旦起来我们希望他一直在运行,来服务客户端。所以卡在这里的话,后面的这个tcp请求就没法发送了。

一个修改方法是使用了go startGrpcGateway后,main函数的最后加上sleep,给一个比较长的时间,那样我们的http服务还是可以被访问。


总的来说,这段代码一方面起了grpc gateway服务器,一方面发送了一条grpc请求,他们没有必要做在一个可执行的程序里。可以参考一下我的代码: https://git.imooc.com/class-108/coolcar/src/week7_%e6%8e%a5%e5%85%a5%e5%be%ae%e6%9c%8d%e5%8a%a1GRPC/server/main.go#L25 main函数用go起了grpc gateway服务器,并且在main里起了grpc服务器,在s.Serve处也会卡住,不断等待grpc请求的到来来进行服务。这样我们的两个服务器都不会退出。


h021-06-30
共2条回复

ccmouse

2021-06-27

看一下加了go以后,main函数还在不在,服务器是不是已经退出了或者是哪里panic了。另外在http.ListenAndServe处打印一些文字,看看有没有真的运行到。


另一方面注意一下防火墙会不会把端口屏蔽了,注意一下弹框或者右下角提示。

0

0 学习 · 1399 问题

查看课程