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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

golang 讀取了大量的 websockets

golang 讀取了大量的 websockets

Go
MMTTMM 2021-12-27 10:38:40
在過去的幾周里,我一直潛伏在 Stack Overflow 上尋找與閱讀大量 websocket 相關(guān)的信息?;旧?,我有許多主機(jī)都通過 websocket 發(fā)出消息,我需要聚合它們。到目前為止,我已經(jīng)使用 Golang 完成了單個(gè) websocket 連接。我也使用 Python 完成了我正在尋找的東西,但我真的很想在 Go 中做到這一點(diǎn)!我使用了 gorilla 的 websocket 示例以及其他一些示例,并且可以在 Go 中成功讀取套接字。然而,websocket 服務(wù)器似乎并不完全符合典型的開發(fā)實(shí)踐,如在 JS 中使用 .forEach 或 .Each 等方法;導(dǎo)致握手失敗。原版    package main    import (            "fmt"            "golang.org/x/net/websocket"            "log"    )    var url = "ws://10.0.1.19:5000/data/websocket"    func main() {            ws, err := websocket.Dial(url, "", origin)            if err != nil {                    log.Fatal(err)            }            var msg = make([]byte, 512)            _, err = ws.Read(msg)            if err != nil {                    log.Fatal(err)            }            fmt.Printf("Receive: %s\n", msg)    }我實(shí)際上不需要向套接字發(fā)送任何數(shù)據(jù),我只需要連接并繼續(xù)讀取它,然后我會(huì)將這些數(shù)據(jù)聚合到單個(gè)流中以執(zhí)行以后的操作。
查看完整描述

1 回答

?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

啟動(dòng)一個(gè) goroutine 來讀取每個(gè)連接。將收到的消息發(fā)送到頻道。從該通道接收以從所有連接獲取消息。


// Create channel to receive messages from all connections

messages := make(chan []byte)


// Run a goroutine for each URL that you want to dial.

for _, u := range urls {

    go func(u string) {

        // Dial with Gorilla package. The x/net/websocket package has issues.

        c, _, err := websocket.DefaultDialer.Dial(u, http.Header{"Origin":{origin}})

        if err != nil {

            log.Fatal("dial:", err)

        }

        // Clean up on exit from this goroutine

        defer c.Close()

        // Loop reading messages. Send each message to the channel.

        for {

            _, m, err := c.ReadMessage()

            if err != nil {

                log.Fatal("read:", err)

                return

            }

            messages <- m

        }

    }(u)

}


// Print all messages received from the goroutines.

for m := range messages {

    fmt.Printf("%s\n", m)

}


查看完整回答
反對(duì) 回復(fù) 2021-12-27
  • 1 回答
  • 0 關(guān)注
  • 212 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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