gpt4 book ai didi

go - 如何在Go中对多个网址进行长轮询?

转载 作者:行者123 更新时间:2023-12-01 22:08:55 25 4
gpt4 key购买 nike

到目前为止,这是我所拥有的:

package main

import (
"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并提取所有更新的数据(最终将其添加到队列中,但一次只添加一个步骤)。之后,重新建立连接。现在,只有第一个订阅运行。谢谢!

最佳答案

我认为您要的是让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()
}

关于go - 如何在Go中对多个网址进行长轮询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com