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

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

我需要使用 go lang 連接到現(xiàn)有的 websocket 服務(wù)器

我需要使用 go lang 連接到現(xiàn)有的 websocket 服務(wù)器

Go
慕村225694 2021-11-08 18:16:29
有一個(gè) websocket 在我的本地主機(jī)上運(yùn)行 ws://localhost:8080/ws我需要可以創(chuàng)建 websocket 客戶端并連接到該服務(wù)器的 go lang 代碼。我的 Google-Fu 技能沒(méi)有教我一個(gè)簡(jiǎn)單的方法來(lái)做到這一點(diǎn)。謝謝你。
查看完整描述

2 回答

?
繁花如伊

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

沒(méi)關(guān)系,我在網(wǎng)上找到了一些幫助代碼?,F(xiàn)在我的代碼看起來(lái)像這樣,以防其他人需要這個(gè):


package main


import (

        "net/http"

        "text/template"

        "code.google.com/p/go.net/websocket"

        "fmt"

        "os"

        "time"

)



const address string = "localhost:9999"


func main() {


    initWebsocketClient()

}



func initWebsocketClient() {

    fmt.Println("Starting Client")

    ws, err := websocket.Dial(fmt.Sprintf("ws://%s/ws", address), "", fmt.Sprintf("http://%s/", address))

    if err != nil {

        fmt.Printf("Dial failed: %s\n", err.Error())

        os.Exit(1)

    }

    incomingMessages := make(chan string)

    go readClientMessages(ws, incomingMessages)

    i := 0

    for {

        select {

        case <-time.After(time.Duration(2e9)):

            i++

            response := new(Message)

            response.RequestID = i

            response.Command = "Eject the hot dog."

            err = websocket.JSON.Send(ws, response)

            if err != nil {

                fmt.Printf("Send failed: %s\n", err.Error())

                os.Exit(1)

            }

        case message := <-incomingMessages:

            fmt.Println(`Message Received:`,message)



        }

    }

}


func readClientMessages(ws *websocket.Conn, incomingMessages chan string) {

    for {

        var message string

        // err := websocket.JSON.Receive(ws, &message)

        err := websocket.Message.Receive(ws, &message)

        if err != nil {

            fmt.Printf("Error::: %s\n", err.Error())

            return

        }

        incomingMessages <- message

    }

}

同樣正如recoba在評(píng)論中所建議的那樣,這里有一個(gè)新的大猩猩示例,供尋求更好解決方案的人使用。


查看完整回答
反對(duì) 回復(fù) 2021-11-08
?
阿晨1998

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

看看這個(gè)基于事件的客戶端,超級(jí)簡(jiǎn)單:https : //github.com/rgamba/evtwebsocket


例子:


package main


import (

    "fmt"


    "github.com/rgamba/evtwebsocket"


    "golang.org/x/net/websocket"

)


func main() {

  c := evtwebsocket.Conn{

    OnConnected: func(w *websocket.Conn) {

        fmt.Println("Connected")

    },

    OnMessage: func(msg []byte) {

        fmt.Printf("Received message: %s\n", msg)

    },

    OnError: func(err error) {

        fmt.Printf("** ERROR **\n%s\n", err.Error())

    },

  }

  // Connect

  c.Dial("ws://echo.websocket.org")

  c.Send([]byte("TEST"), nil)

}


查看完整回答
反對(duì) 回復(fù) 2021-11-08
  • 2 回答
  • 0 關(guān)注
  • 271 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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