亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中長輪詢多個 url?

如何在 Go 中長輪詢多個 url?

Go
縹緲止盈 2023-07-31 15:11:44
這是我到目前為止所擁有的:package mainimport (    "encoding/json"    "fmt"    "io/ioutil"    "log"    "net/http")func subscribe(urls Urls) []byte {    req, err := http.NewRequest("GET", urls.Url, nil)    if err != nil {        log.Fatal(err)    }    req.Header.Set("authentication", "Bearer " + urls.Token)    http_client := &http.Client{}    res, err := http_client.Do(req)    if err != nil {        log.Fatal(err)    }    defer res.Body.Close()    resourceResp, err := ioutil.ReadAll(res.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(resourceResp))    var data map[string]interface{}    error := json.Unmarshal([]byte(resourceResp), &data)    if error != nil {        log.Fatal(error)    }    return subscribe(urls)}type Urls struct {    Url string    Token string}func main() {    var urls [2]Urls    urls[0] = Urls{        Url: "https://example.com/users/8",        Token: "abcdefg",    }    urls[1] = Urls{        Url:   "https://example.com/users/9",        Token: "hijklmnop",    }    subscribe(urls[0])    subscribe(urls[1])}最終目標是“訂閱”多個 url 并提取任何更新的數據(最終將其添加到隊列中,但一次一步)。之后,重新建立連接。現在,只有第一個訂閱運行。謝謝!
查看完整描述

1 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我認為您要求的是subscribe并行運行這些功能。一種方法是將它們包裝在goroutine中并等待所有goroutine完成:


func main() {

    ...

    ...

    var wg sync.WaitGroup


    wg.Add(len(urls))


    for _, url := range(urls) {

        go func() {

            defer wg.Done()

            subscribe(url)

        }()

    }


    wg.Wait()

}


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號