golang apns升级到http2

binbinjx · · 3010 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

记录一下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.


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:binbinjx

查看原文:golang apns升级到http2

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3010 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传