From e4451a801b5d5315d6f4c1b37e8e96c424cfc12f Mon Sep 17 00:00:00 2001 From: chai2010 Date: Thu, 27 Dec 2018 19:25:29 +0800 Subject: [PATCH] =?UTF-8?q?ch4.5.4:=20=E5=A2=9E=E5=8A=A0http=E5=92=8Cgrpc?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E7=AB=AF=E5=8F=A3=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch4-rpc/ch4-05-grpc-hack.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ch4-rpc/ch4-05-grpc-hack.md b/ch4-rpc/ch4-05-grpc-hack.md index 2f37d8a..0cdf509 100644 --- a/ch4-rpc/ch4-05-grpc-hack.md +++ b/ch4-rpc/ch4-05-grpc-hack.md @@ -351,9 +351,21 @@ myServer := grpc.NewServer( ## 4.5.4 和Web服务共存 -gRPC构建在HTTP/2协议之上,因此我们可以将gRPC服务和普通的Web服务架设在同一个端口之上。因为目前Go语言版本的gRPC实现还不够完善,只有启用了TLS协议之后才能将gRPC和Web服务运行在同一个端口。 +gRPC构建在HTTP/2协议之上,因此我们可以将gRPC服务和普通的Web服务架设在同一个端口之上。 -服务器证书的生成过程前文已经讲过,这里不再赘述。启用普通的https服务器非常简单: +对于没有启动TLS协议的服务则需要对HTTP2/2特性做适当的调整: + +```go +func main() { + mux := http.NewServeMux() + + h2Handler := h2c.NewHandler(mux, &http2.Server{}) + server = &http.Server{Addr: ":3999", Handler: h2Handler} + server.ListenAndServe() +} +``` + +启用普通的https服务器则非常简单: ```go func main() {