第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

從 webscoket 客戶端獲取渠道價值

從 webscoket 客戶端獲取渠道價值

Go
慕姐8265434 2022-12-19 17:54:49
我正在運(yùn)行一個 websocket 客戶端,并希望將響應(yīng)從客戶端傳遞到我可以在我的主文件中使用的通道。目前,通道只返回一次 nil 值,然后就沒有別的了。將值傳遞給頻道時,我似乎遇到了問題。有什么幫助嗎?這是我到目前為止所做的package mainimport (    "context"    "fmt"    "kraken_client/stored_data"    "kraken_client/ws_client"    "os"    "os/signal"    "strings"    "sync"    "syscall")func main() {    // check if in production or testing mode & find base curency    var testing bool = true    args := os.Args    isTesting(args, &testing, &stored_data.Base_currency)    // go routine handler    comms := make(chan os.Signal, 1)    signal.Notify(comms, os.Interrupt, syscall.SIGTERM)    ctx := context.Background()    ctx, cancel := context.WithCancel(ctx)    var wg sync.WaitGroup    // set ohlc interval and pairs    OHLCinterval := 5    pairs := []string{"BTC/" + stored_data.Base_currency, "EOS/" + stored_data.Base_currency}    // create ws connections    pubSocket, err := ws_client.ConnectToServer("public", testing)    if err != nil {        fmt.Println(err)        os.Exit(1)    }    // listen to websocket connections    ch := make(chan interface{})    wg.Add(1)    go pubSocket.PubListen(ctx, &wg, ch, testing)    // subscribe to a stream    pubSocket.SubscribeToOHLC(pairs, OHLCinterval)    go func() {        for c := range ch {            fmt.Println(c)        }    }()    <-comms    cancel()    wg.Wait()    defer close(ch)}下面是 PubListen 函數(shù)的工作原理func (socket *Socket) PubListen(ctx context.Context, wg *sync.WaitGroup, ch chan interface{}, testing bool) {    defer wg.Done()    defer socket.Close()    var res interface{}    socket.OnTextMessage = func(message string, socket Socket) {        //log.Println(message)        res = pubJsonDecoder(message, testing) // this function decodes the message and returns an interface        log.Println(res) // this is printing the correctly decoded value.    }    ch <- res    log.Println(res) // does not print a value    log.Println(ch) // does not print a value    <-ctx.Done()    log.Println("closing public socket")    return}我究竟做錯了什么?
查看完整描述

1 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個贊

問題中的代碼在由 OnTextMessage 函數(shù)設(shè)置之前執(zhí)行ch <- res一次語句。PubListenres


要ch在每條消息上發(fā)送一個值,請將行ch <- res移至 OnTextMessage 函數(shù)。該函數(shù)為每條消息調(diào)用一次。


func (socket *Socket) PubListen(ctx context.Context, wg *sync.WaitGroup, ch chan interface{}, testing bool) {

    defer wg.Done()

    defer socket.Close()

    socket.OnTextMessage = func(message string, socket Socket) {

        res := pubJsonDecoder(message, testing)

        ch <- res

        log.Println(res)

    }

    <-ctx.Done()

    log.Println("closing public socket")

    return

}


查看完整回答
反對 回復(fù) 2022-12-19
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號