golang中如何使用http长链接(client端)
Posted Golang语言社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中如何使用http长链接(client端)的主要内容,如果未能解决你的问题,请参考以下文章
golang http client keep-alive最大连接数