如何在Go语言中发起向外的WebSocket连接请求
Go 发起 WebSocket 客户端连接的正确方式
你遇到的「unsupported protocol scheme "ws"」错误,是因为http.Client本身不支持ws/wss协议,直接用它处理WebSocket请求行不通。要发起WebSocket客户端连接,需要使用专门的WebSocket库,最常用的是gorilla/websocket。
解决方案步骤:
- 首先安装依赖库:
go get github.com/gorilla/websocket
- 使用库提供的
Dial方法建立连接,直接获取*websocket.Conn对象:
package main import ( "fmt" "github.com/gorilla/websocket" ) func main() { // 定义WebSocket服务器地址 url := "ws://localhost:8081/ws" // 建立WebSocket连接 conn, _, err := websocket.DefaultDialer.Dial(url, nil) if err != nil { fmt.Println("连接失败:", err) return } defer conn.Close() // 确保退出时关闭连接 // 用获取到的conn初始化你的client client := newClient(conn) go client.Read() go client.Write() clientsMap.Add(client) // 阻塞主goroutine,避免程序提前退出 select {} }
关键说明:
websocket.DefaultDialer是库提供的默认拨号器,包含WebSocket握手的默认配置,你也可以根据需求自定义Dialer(比如设置超时、代理等)。Dial方法返回三个值:*websocket.Conn、握手响应的*http.Response、错误信息,不需要响应的话可以用下划线忽略。- 拿到
conn后,可调用它的ReadMessage()、WriteMessage()方法与服务端交互,对应你代码里的Read()和Write()逻辑。
内容的提问来源于stack exchange,提问作者ERVIN228
相关产品推荐
相关产品推荐

