记录一下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..2需要先升级到1.。因为1.4之后的版本,编译是基于golang的,而不再是gcc。
)下载golang1.4的包,解压到/usr/local(这之前先将老的go备份吧,.4的目录使用go1.4吧,因为这是临时的)。当然这个安装路径随便怎么选,一般是这个路径。 )编译源码。进入go1./src,执行./all.bash,等待... )解压go1.6的包,解压到/usr/local,目录取名直接就是go )配置GOROOT_BOOTSTRAP环境变量,指向go1.4的目录 export GOROOT_BOOTSTRAP=/usr/local/go1.
因为这个是临时的,就直接在会话中指定。 )进入go1.6进行源码编译 cd /usr/local/go/src ./all.bash
)编译通过后,设置环境变量,在/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.

golang apns升级到http2的更多相关文章

  1. apns-http2-php,苹果push升级到http2

    最近公司push推送升级,用苹果http2进行推送,http2的好处就不说了,这些网上都可以查到,但是真正在项目中用的,用php写的还是特别少,因此,写出来跟大家分享,废话不说了,直接上代码: pus ...

  2. golang 热升级

    需求场景 干净利落地升级正在运行的agent程序.适用于Devops团队. 目标: 不关闭现有连接:例如我们不希望关掉已部署的运行中的程序.但又想不受限制地随时升级服务. 新的进程要能够启动并替换掉旧 ...

  3. nginx openssl升级支持http2

    阿里云openssl升级,实现nginx主动推送 nginx主动推送能够有效减少不必要的报文传输,减少用户请求次数,以达到更快访问速度 现有版本检查 [root@node3 ~]# openssl v ...

  4. Golang开发支持平滑升级(优雅重启)的HTTP服务

    Golang开发支持平滑升级(优雅重启)的HTTP服务 - tabalt的博客 http://tabalt.net/blog/graceful-http-server-for-golang/ http ...

  5. 记升级一次的http2学习

    首先,就先对比下http2和http1.X的区别和升级它的优势吧. 在 HTTP .X 中,为了性能考虑,我们会引入雪碧图.将小图内联.使用多个域名等等的方式.这一切都是因为浏览器限制了同一个域名下的 ...

  6. 详解golang net之transport

    关于golang http transport的讲解,网上有很多文章读它进行了描述,但很多文章讲的都比较粗,很多代码实现并没有讲清楚.故给出更加详细的实现说明.整体看下来细节实现层面还是比较难懂的. ...

  7. golang之网络开发

    TCP Server/Client开发 net包提供network I/O开发接口,包括TCP/IP.UDP.DNS和Unix domain sockets. 常用开发一般仅需要最基础接口或函数: 服 ...

  8. Kubernetes 集群无损升级实践 转至元数据结尾

    一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...

  9. HTTP、HTTP2

      HTTP.HTTP2.0.SPDY.HTTPS 你应该知道的一些事 原文链接:http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-readi ...

随机推荐

  1. POJ3177 Redundant Paths【tarjan边双联通分量】

    LINK 题目大意 给你一个有重边的无向图图,问你最少连接多少条边可以使得整个图双联通 思路 就是个边双的模板 注意判重边的时候只对父亲节点需要考虑 你就dfs的时候记录一下出现了多少条连向父亲的边就 ...

  2. 洛谷 P1039侦探推理

    /* 枚举罪犯和星期几,那么所有人说的话是真是假一目了然. 首先一个人不能既说真话又说假话. 即: I am guilty. I am not guilty. 因为非真即假,所以直接判断impossi ...

  3. 为已编译的DLL附带强命名

    在我们开发的过程中,会经常调用其他人写好的DLL类库,由于种种的原因,不管是公司规定,还是个人习惯等等的原因,有时候需要调用各个类库直接邀请必须强命名. 但是我们临时也无法找到源代码进行重新编译等事情 ...

  4. python连接redis sentinel集群

    安装 python redis 客户端 pip install redis #!/usr/bin/env python # -*- coding:utf-8 -*- #!/usr/bin/env py ...

  5. Web service 框架比较CXF xfire aisx2 aisx

    Web 服务框架.它还体现了从 Axis 1.x 系列获得的经验和最近两年在 Web 服务领域的发展.推出 Axis2 的主要原因之一是从速度和内存方面获得更好的性能——不过还添加了一些新特性和功能. ...

  6. 转转转-精通js正则表达式

    原文地址:http://www.cnblogs.com/aaronjs/archive/2012/06/30/2570970.html 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字 ...

  7. Bootstrap-Other:Less 教程

    ylbtech-Bootstrap-Other:Less 教程 1.返回顶部 1. 2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. http://www.runoob. ...

  8. qq浏览器如何全屏截图

    对于经常使用qq浏览器的用户可以关注一下~超级使用的功能哦~ http://jingyan.baidu.com/article/a3a3f811f4e0508da2eb8a04.html

  9. display:table; 也可以实现 div 始终和内包的图片大小相同

    display:table; 也可以实现 div 始终和内包的图片大小相同

  10. OpenGL 画高斯随机函数

    高斯函数代码 const float CFFTOceanShader::_getGaussianRandomFloat() const { float u1 = rand() / (float)RAN ...