记录一下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. VMwarePlayer虚拟机下centos6的静态IP配置

    1. 把VMwarePlayer生成的网络适配器 VMware Network Adapter VMnet1 设置成自动获取IP地址. 2.在VMwarePlayer中选择对应的虚拟机,点击edit ...

  2. bootstrap table教程--使用入门基本用法

    笔者在查询bootstrap table资料的时候,看了很多文章,发觉很多文章都写了关于如何使用bootstrap table的例子,当然最好的例子还是官网.但是对于某部分技术人员来说,入门还是不够详 ...

  3. python中如何将两个list合并成一个list,不用for语句

    1, add 2, 用list的extend方法,L1.extend(L2),该方法将参数L2的全部元素添加到L1的尾部,例如: 3, 用切片(slice)操作,L1[len(L1):len(L1)] ...

  4. 转 HTTP.SYS 详解

    http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...

  5. FastAdmin 的前端环境怎么安装?

    FastAdmin 的前端环境怎么安装? 安装 Git 安装 Node.js 安装 cnpm 安装 bower 开始安装 FastAdmin 的前端组件 bower install bower upd ...

  6. OpenLTE安装教程

    安装需求: USB3 interface Modern multicore CPU (Intel Core i5, Core i7 or equivalent with SSE4.1 SSE4.2 a ...

  7. C++ 数据的封装 初始封装

    C++ 数据封装 所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数. 程序数据:数据是程序的信息,会受到程序函数的影响. 封装是面向对象编程中的把 ...

  8. web开发的功能备忘录

    总体设计 Web项目开发中,我们可以根据不同的功能,将整个系统的功能进行划分.系统功能总体来说可以划分为两个模块:系统的必备功能和逻辑业务功能. 下面主要是分析一下系统的必备功能,所谓系统的必备功能是 ...

  9. [saiku] schema文件分析

    上一篇讲到了如何在管理台配置数据源 [ http://www.cnblogs.com/avivaye/p/4877767.html ] 这次来说明下shema文件里面是怎样配置Cube和角色权限的 通 ...

  10. django-url命名空间+反查

    from django.conf.urls import url, include urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^h ...