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.

posted @ 2016-06-16 09:30  王彬彬  阅读(1640)  评论(0编辑  收藏

专注于c++后端开发,擅长IM领域。 如有需求请联系邮箱 cugbinbin@163.com

欢迎点击个人自定义博客