兩行開啟Go http quic

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

QUIC,簡單來說,就是使用UDP的傳輸協議,根據Google自己的報告,速度可以加快30%。主要優點有:

1. 快速建立連結(不用3次握手和TLS4次握手)2. 多工3. 改進的流控4. 快速SSL/TLS握手5. 適合移動使用者訪問

這麼好的效能,當然要趕緊用Go試試看。

https://github.com/lucas-clemente/quic-go

樣本中的代碼也很簡單。

http.Handle("/", http.FileServer(http.Dir(wwwDir)))h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)

不過在實踐裡,還是碰到了2個坑。

TLS配置

因為我的服務是一個http.Handler, 所以quic需要重新設定TLSconfig,否則就會報錯。下面是範例程式碼

quic := &h2quic.Server{Server: server}quic.TLSConfig = &tls.Config{}quic.TLSConfig.GetCertificate = getCertificatepln, err := net.ListenPacket("udp", cfg.Listen)if err != nil {    log.Fatal(err)}log.Print("listen quic on udp:%s", cfg.Listen)go quic.Serve(pln)

HEADER設定

成功啟用後,Chrome中的SPDY外掛程式並沒有出現綠色的標誌,還是繼續使用HTTP2,經過尋找後,發現Google在自家的header中添加了

 writer.ResponseWriter.Header().Add("alt-svc", `quic=":443"; ma=2592000; v="38,37,36"`)

其中

  • ma是到期時間,單位是秒
  • v是指支援的quic版本
  • alt-svc是alternative-service的縮寫
  • quic中是quic的連接埠,我指定了443

最後通過在chrome地址欄中輸入

chrome://net-internals/#quic

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.