我如何连接到 golang 中的第 3 方 ws 服务作为 golang 中的大猩猩的客户端?还是不可能?

How do I connect to a 3rd party ws service in golang as a client with gorilla in golang? Or is it not possible?

我只想使用 gorilla websocket 包连接到交易 ws 地址,但我只能找到 Web 套接字实现的服务器端。如何连接到 ws 地址和来自它的 send/receive 消息。有代码示例吗?

您可以将 Websocket 视为服务器和客户端之间的直接信息管道 - 就像 Unix 管道一样,信息可以从两端发送和接收。

gorilla/websocket 就是这样工作的。您需要查看第 29-50 行中的 here,了解如何连接到 websocket 服务器并读取从服务器端发送的消息。总之,发个消息:

// c *websocket.Conn needs to be initialized from websocket.DefaultDialer.Dial

err := c.WriteMessage(websocket.TextMessage, []byte("Hello, World!"))

并阅读消息:

messageType, msg, err := c.ReadMessage()

您可能不需要或关心调用 c.ReadMessage() 返回的 messageType,但以防万一,它在 Websocket RFC Spec 中定义:

     |Opcode  | Meaning                             | Reference |
    -+--------+-------------------------------------+-----------|
     | 0      | Continuation Frame                  | RFC 6455  |
    -+--------+-------------------------------------+-----------|
     | 1      | Text Frame                          | RFC 6455  |
    -+--------+-------------------------------------+-----------|
     | 2      | Binary Frame                        | RFC 6455  |
    -+--------+-------------------------------------+-----------|
     | 8      | Connection Close Frame              | RFC 6455  |
    -+--------+-------------------------------------+-----------|
     | 9      | Ping Frame                          | RFC 6455  |
    -+--------+-------------------------------------+-----------|
     | 10     | Pong Frame                          | RFC 6455  |
    -+--------+-------------------------------------+-----------|