我开始学习Golang。我有一个项目,我需要通过WebSocket连接从API流一些数据,并在控制台中打印出来。我不明白的是-我有一个URL,所以我可以在它上发出请求(通过net/http包),但我如何才能将它升级到WebSocket?我可以只使用纯Golang吗?我在互联网上找不到合适的信息。所有的例子都使用JS,或者它们使它变得太复杂(比如构建一些应用程序,我不想这样做,因为它的复杂性,我根本无法跟随)。
zvms9eto1#
我明白了。WebSocket有客户端和服务器端。大多数时候人们需要在浏览器中运行客户端。大猩猩的WebSocket实现支持客户端和服务器端。你可以用它来拨号你的服务器。这里是一个示例代码。
package main import ( "fmt" "github.com/gorilla/websocket" ) func main() { ws, _, err := websocket.DefaultDialer.Dial("ws[s]://localhost/path?query", nil) if err != nil { panic(err) } defer ws.Close() for { // Read a message from websocket connection _, msg, err := ws.ReadMessage() if err != nil { return } fmt.Println(string(msg)) // uncomment below if you need send message to remote server //if err = ws.WriteMessage(websocket.TextMessage, msg); err != nil { // return //} } }
下面是完成的简单客户端和服务器示例:https://github.com/gorilla/websocket/tree/master/examples/echo
0h4hbjxa2#
使用go WebSocket就像javascript一样:
package main import ( "fmt" "github.com/lxzan/gws" "log" ) func main() { socket, _, err := gws.NewClient(new(WebSocket), &gws.ClientOption{ Addr: "ws://127.0.0.1:3000/connect", }) if err != nil { log.Printf(err.Error()) return } socket.Listen() } type WebSocket struct { gws.BuiltinEventHandler } func (c *WebSocket) OnMessage(socket *gws.Conn, message *gws.Message) { fmt.Printf("recv: %s\n", message.Data.String()) }
2条答案
按热度按时间zvms9eto1#
我明白了。WebSocket有客户端和服务器端。大多数时候人们需要在浏览器中运行客户端。大猩猩的WebSocket实现支持客户端和服务器端。你可以用它来拨号你的服务器。这里是一个示例代码。
下面是完成的简单客户端和服务器示例:https://github.com/gorilla/websocket/tree/master/examples/echo
0h4hbjxa2#
使用go WebSocket就像javascript一样: