golang中如何使用http長連結(client端)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

RESTFUL請求大部分都可以用短串連,即三向交握建立連結,交換資料完成後,釋放掉的連結,短連結不會長時間佔用連接埠號碼,實際項目中還會用到另一種,長連結,比如用戶端發送RESTFUL請求,需要監測某一資源變化情況,服務端提供watch機制,在資源有變化時通知client端。

那麼client端,相對於短連結,長連結應該怎麼寫呢?

和短連結基本一樣,只需要迴圈讀取server端返回的response即可。

package mainimport (        "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()}

參考:https://stackoverflow.com/questions/10152478/how-to-make-a-long-connection-with-http-client

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.