You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Go语言中发起向外的WebSocket连接请求

Go 发起 WebSocket 客户端连接的正确方式

你遇到的「unsupported protocol scheme "ws"」错误,是因为http.Client本身不支持ws/wss协议,直接用它处理WebSocket请求行不通。要发起WebSocket客户端连接,需要使用专门的WebSocket库,最常用的是gorilla/websocket。

解决方案步骤:

  1. 首先安装依赖库:
go get github.com/gorilla/websocket
  1. 使用库提供的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:55:29