golang apns升級到http2


記錄一下golang中升級apns,使用http2替換http1.1的詳細過程。

apns使用http2的好處就不用再說了,網上一搜一堆信息。蘋果的apns推送在2015年8月就支持了http2協議,新的協議還是比較人性化的,基於http2的速度也有提升。

接下來列舉下升級的步驟。

1. 對於golang的版本有要求,需要將golang升級到1.5以上。當前最新穩定版本是1.6.2,所以我直接升級到了1.6.2

注意golang1.6對系統有要求,否則源碼編譯不會通過:

 

refer: https://golang.org/doc/install

 

鑒於工作中當前的golang版本是1.1.2,比較老,其升級到1.6.2需要先升級到1.4。因為1.4之后的版本,編譯是基於golang的,而不再是gcc。
1)下載golang1.4的包,解壓到/usr/local(這之前先將老的go備份吧,1.4的目錄使用go1.4吧,因為這是臨時的)。當然這個安裝路徑隨便怎么選,一般是這個路徑。

2)編譯源碼。進入go1.4/src,執行./all.bash,等待...

3)解壓go1.6的包,解壓到/usr/local,目錄取名直接就是go

4)配置GOROOT_BOOTSTRAP環境變量,指向go1.4的目錄

export GOROOT_BOOTSTRAP=/usr/local/go1.4
因為這個是臨時的,就直接在會話中指定。

5)進入go1.6進行源碼編譯

cd /usr/local/go/src

./all.bash
6)編譯通過后,設置環境變量,在/etc/profile中追加(估計之前有這個GOROOT的,沒有這個就追加)

export GOROOT=/usr/local/go

PATH=$PATH:$GOROOT/bin/

然后保存退出

source /etc/profile

7)go version看看版本號

2. 下載必須的第三方包,使用go get失敗的,就去其他地方手動下載吧,因為國外的網站,在天朝是被牆的。推薦去https://gopm.io/download

必須下載以下的第三方包:

golang.org/x/crypto
golang.org/x/net/http2
golang.org/x/text

將這些包解壓到你的GOPATH工作目錄。解壓后目錄如下

src
├── github.com
...
├── golang.org
│   └── x
│        ├── crypto
│        ├── net
│        └── text

之后再

go get golang.org/x/net/http2 
go get golang.org/x/crypto
go get golang.org/x/text

到此為止,可以在golang里面使用http2進行開發了。

 

遇到的問題

1. apns的請求返回報錯,malformed HTTP status code "client"

這個錯誤是因為使用了http1.1的協議去請求,而apns使用的是http2的協議。可能是原因是自己沒有成功使用http2.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM