记录一下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. 接口测试HttpClient实践20150925

    用了工具做接口测试,但是对于加密数据和结果的比对,以及批量数据读取,回头还是觉得代码来更方便灵活,从excle中读取数据,构成参数,发请求,并获取返回结果和预期值比较,并将结果输出程报告,可以深入做成 ...

  2. Oracle(一)安装

    一.到官网或者哪里去下载Oracle,我下的是winX64的11g版本 官网:https://www.oracle.com/technetwork/database/enterprise-editio ...

  3. Centos 中扩展 软件源 的安装 之 epel ( 为yum 扩展软件源 EPEL源 )

    EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL.CentOS和Scientif ...

  4. selenium定位元素的8种方法

    By.id,By.name,By.tagName,By.className,By.linkText,By.partialLinkText,By.xpath,By.cssSelector <a h ...

  5. hasura graphql subscriptions 使用

      subscriptions graphql 的一项实时数据推送的功能,还是很方便的,自己在直接使用subscriptions-transport-ws npm 包 的时候运行一直有错误(主要是依赖 ...

  6. FastAdmin 的 captcha 是如何来的?

    FastAdmin 的 captcha 是如何来的? 如何打开 FastAdmin 的验证吗? 文件位置 C:\www\fastadmin\application\config.php 改 login ...

  7. MySql 中的 FIND_IN_SET 的使用和相关问题

    MySql 中的 FIND_IN_SET 的使用和相关问题 QQ 群里有人讨论如果在 category_ids 中打开 12 的分类,而 category_ids 中的 ID 是以 逗号分开的. 使用 ...

  8. Chrome 解决flash问题

    Chrome 无法显示使用插件的内容 Chrome 不再支持很多插件.不过网站创建者已经通过更安全的方式,将多数这类功能添加到 Chrome 中. 为什么 NPAPI 插件现在无法正常运行过去,许多插 ...

  9. web常用测试点记录

    输入框 1.字符型输入框: 单行文本输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”,特别要注意单引号和&符号.如果禁止直接输入特殊字符时,使用 ...

  10. 刷新SQL Server所有视图、函数、存储过程

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...