2017-12-28 21 views
1

go-langで正確にconnectionを実行しているときにトラブルが発生しています。安全なwebsocketに接続する際に問題が発生する

これまでのところ、私がやった:

u := url.URL{Scheme: "wss", Host: "streamer.cryptocompare.com"} 

var dialer *websocket.Dialer 
conn, _, err := dialer.Dial(u.String(), nil) 
l.Log(err) 

msg, err := json.Marshal(Message{"SubAdd", map[string]interface{}{"subs": []string{"5~CCCAGG~BTC~USD"}}}) 
l.Log(err) 

err = conn.WriteMessage(websocket.TextMessage, msg) 
fmt.Println(err.Error()) 
l.Log(err) 

を私はまだWebSocketをについての学習、およびその使用方法です。

編集:これは誤りである、私は取得しています:

panic: runtime error: invalid memory address or nil pointer dereference 
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x718937] 

goroutine 22 [running]: 
github.com/gorilla/websocket.(*Conn).WriteMessage(0x0, 0x1, 0xc420248020, 0x36, 0x40, 0x0, 0x0) 
    /home/avl/go/src/github.com/gorilla/websocket/conn.go:734 +0x37 
main.SetupSockets(0xc420058370) 
    /home/avl/Dropbox/Development/mixed/server/crypto.go:55 +0x378 
created by main.main 
    /home/avl/Dropbox/Development/mixed/server/main.go:21 +0x9a 
exit status 2 

を編集2:ライン55 crypto.goでは、あなたがconn, _, err := dialer.Dial(u.String(), nil)中にエラーを取得ここでは、このmsg, err := json.Marshal(Message{"SubAdd", map[string]interface{}{"subs": []string{"5~CCCAGG~BTC~USD"}}})

+1

dialer.Dialからの2番目の戻り値は、サーバーからの応答形式です。私は何が間違っているのかを見るために、応答の状態と本文を印刷することをお勧めします。また、このサービスはsocket.ioを使用します。 socket.ioがwebsocketプロトコルの上に追加したものを使用するか実装する必要があります。 –

+0

試してみましたが、運がありません。応答がnil – Mobilpadde

+0

'予期しないEOF' – Mobilpadde

答えて

3

に対応します

予期せぬEOF

あなたは、このエラーを処理する必要があり、それがあるため、サーバの応答のために発生します:

https://github.com/gorilla/websocket/blob/master/client.go#L282

resp, err := http.ReadResponse(conn.br, req) 
if err != nil { 
    return nil, nil, err 
} 

そのエラーWriteMessage方法は意味がありませんした後。

+0

ああ、そうです。愚かな私...ありがとう! – Mobilpadde

+0

しかし、私は私の質問を更新しました。なぜ私がEOFを取得しているのか説明できますか? – Mobilpadde

+1

サーバに問題があります。 '' 'u:= url.URL {Scheme:" wss "、ホスト:" echo.websocket.org "}' ''うまく動作します。 – bayrinat

関連する問題