golang中如何使用http长链接(client端)

RESTFUL请求大部分都可以用短连接,即三次握手建立链接,交换数据完成后,释放掉的链接,短链接不会长时间占用端口号,实际项目中还会用到另一种,长链接,比如客户端发送RESTFUL请求,需要监测某一资源变化情况,服务端提供watch机制,在资源有变化时通知client端。

那么client端,相对于短链接,长链接应该怎么写呢?

和短链接基本一样,只需要循环读取server端返回的response即可。

package main



import (

        "fmt"

        "io"

        "log"

        "net/http"

)



func main() {

        request, err := http.NewRequest("GET", "http://www.example.com/", nil)

        if err != nil {

                log.Fatal(err)

        }



        http_client := &http.Client{}

        response, err := http_client.Do(request)

        if err != nil {

                log.Fatal(err)

        }



        buf := make([]byte, 4096) // any non zero value will do, try '1'.

        for {

                n, err := response.Body.Read(buf)

                if n == 0 && err != nil { // simplified

                        break

                }



                fmt.Printf("%s", buf[:n]) // no need to convert to string here

        }

        fmt.Println()

}

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏地方网络工作室的专栏

打造前端 Deepin Linux 工作环境——调节鼠标滚轮速度

打造前端 Deepin Linux 工作环境——调节鼠标滚轮速度 在 deepin 的系统设置里面,没有找到鼠标滚轮速度调节的选项。但是默认情况下,其滚轮的速度...

358100
来自专栏Youngxj

修改Windows 7 开机启动画面

30220
来自专栏Spring相关

Vue路由router-link的使用

16020
来自专栏IT民工生存指南

从0开始Vue.js 和 Webpack 4 [1]

19750
来自专栏听雨堂

web中的水晶报表 "出现通信错误。将停止打印"

被这个问题快折腾死,死活都找不到原因,找了一堆解答,无外乎这几种情况,但都不管用 在Page_Init中绑定数据。无效。 activex控件的版本,我试过10....

20890
来自专栏云计算

在Ubuntu 16.04上安装WordPress

在本指南中,您将学习如何在运行Ubuntu 16.04的Linode上安装WordPress。WordPress是一个流行的动态内容管理系统,专注于博客。Wor...

70020
来自专栏技术博客

VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置

   重装系统后,VS调用的Web浏览器不是IE了,VS调式不了JavaScript代码了。这两天一直在试终于搞定了。这里查找的问题当然主要是VS里面调式Jav...

21040
来自专栏DT乱“码”

微信小程序开发指引

官方文档教程1:http://bcoder.cn/wxopen/ 官方文档教程2:http://bing.aliaii.com/wxopen/  本文档将带你一...

576100

在Ubuntu 18.04上安装WordPress

WordPress是一个非常流行的专注于博客的动态内容管理系统(CMS)。WordPress可以部署在LAMP或LEMP堆栈上。它具有的可扩展插件框架和主题系统...

1K10
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(四)调整 App.vue 和 router 路由

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(四)调整 App.vue 和 router 路由 前情回顾 在上一篇《V...

24590

扫码关注云+社区

领取腾讯云代金券