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

时间:2022-05-06
本文章向大家介绍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()

}