记录一下golang中升级apns,使用http2替换http1.1的详细过程。git
apns使用http2的好处就不用再说了,网上一搜一堆信息。苹果的apns推送在2015年8月就支持了http2协议,新的协议仍是比较人性化的,基于http2的速度也有提高。github
接下来列举下升级的步骤。golang
1. 对于golang的版本有要求,须要将golang升级到1.5以上。当前最新稳定版本是1.6.2,因此我直接升级到了1.6.2。bash
注意golang1.6对系统有要求,不然源码编译不会经过:网站
refer: https://golang.org/doc/installspa
鉴于工做中当前的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/downloadcode
必须下载如下的第三方包: 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进行开发了。orm
遇到的问题blog
1. apns的请求返回报错,malformed HTTP status code "client"开发
这个错误是由于使用了http1.1的协议去请求,而apns使用的是http2的协议。多是缘由是本身没有成功使用http2.