Websocket: [вопрос] Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΡ‚Π²Π΅Ρ‚Π° Π² client.go

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 июл. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: gorilla/websocket

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ

Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ошибки.
Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΡ‚Π²Π΅Ρ‚Π° Π² client.go
…

ВСрсии

ВСрсия Go: go version
go вСрсия go1.12.7 windows / amd64
…

"ПокаТи мнС код!"

НСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΈΠ½Π°Ρ‡Π΅ Π½Π°ΠΌ придСтся Π³Π°Π΄Π°Ρ‚ΡŒ!
…

// client.go
package main

import (
    "flag"
    "fmt"
    "log"
    "net/http"
    "net/url"
    "os"
    "os/signal"
    "encoding/json"

    "github.com/gorilla/websocket"
)

var (
    addr = flag.String("addr", "127.0.0.1:17505", "http service address")
    path = flag.String("path", "/ws", "ws path")
    auth = flag.String("auth", "","auth key")
    data = flag.String("data", "ping","put data,eg: ping")
)

func usage() {
    fmt.Printf("Usage Example: %s -data 'ping'\n", os.Args[0])
    fmt.Printf("Usage Example: %s -data '%s'\n", os.Args[0],
        `{reqid:"10000",eid:"11111",action:"on",uptime:"1111111"}`)
    flag.PrintDefaults()
}

func init(){
    flag.Usage = usage
}

func main() {
    flag.Parse()

    log.SetFlags(0)

    interrupt := make(chan os.Signal, 1)
    signal.Notify(interrupt, os.Interrupt)

    u := url.URL{Scheme: "ws", Host: *addr, Path: *path}
    log.Printf("connecting to %s", u.String())

    h := http.Header{"X-Websocket-Key": []string{*auth} }
    c, _, err := websocket.DefaultDialer.Dial(u.String(), h)
    if err != nil {
        log.Fatal("dial:", err)
    }
    defer c.Close()

    // print request header
    h2, _ := json.Marshal(h)
    fmt.Printf("request header: %s\n",h2)

    done := make(chan struct{})


    go func() {
        defer close(done)
        for {
            _, message, err := c.ReadMessage()
            if err != nil {
                log.Println("read:", err)
                return
            }
            log.Printf("recv: %s", message)
        }
    }()

    err = c.WriteMessage(websocket.TextMessage, []byte(*data))
    if err != nil {
        log.Println("write:", err)
        return
    }
    fmt.Println("send: ",*data)

    for {
        select {
        case <-done:
            return
        case <-interrupt:
            log.Println("interrupt")
            err := c.WriteMessage(websocket.CloseMessage, 
                websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
            if err != nil {
                log.Println("write close:", err)
                return
            }
            return
        }
    }
}

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

c, resp, err := websocket.DefaultDialer.Dial(u.String(), h)
header := resp.Header

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

c, resp, err := websocket.DefaultDialer.Dial(u.String(), h)
header := resp.Header
c, resp, err := websocket.DefaultDialer.Dial(u.String(), h)
header := resp.Header

ΠšΡ€ΡƒΡ‚ΠΎ, спасибо большоС. :-)

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠ΅, Π½ΠΎ Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π΅Ρ‰Π΅ вопросы.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ