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

如何用Go连接Socket.IO NodeJS服务器?解决NewClient未定义错误

解决go-socket.io中undefined: socketio.NewClient错误

你遇到的错误是因为当前使用的go-socket.io版本(v3及以上)已重构API,旧文档中的socketio.NewClient方法被移除,客户端功能移至client子包中。以下是修复方案:

步骤1:安装最新版本的go-socket.io

执行命令更新依赖:

go get github.com/googollee/go-socket.io@latest

步骤2:修正Go客户端代码

替换原有代码为以下内容:

package main

import (
    "fmt"
    "github.com/googollee/go-socket.io/client"
)

func main() {
    url := "http://localhost:3000"

    // 配置客户端传输方式,必填项
    opts := &client.Options{
        Transport: "websocket",
    }

    // 初始化并连接服务器
    c, err := client.NewClient(url, opts)
    if err != nil {
        panic(err)
    }

    // 监听连接成功事件(新版本用"connect"而非"connection")
    c.On("connect", func() {
        fmt.Println("connected as", c.ID())
    })

    // 监听连接断开事件
    c.On("disconnect", func() {
        fmt.Println("disconnected")
    })

    // 阻塞主协程,维持连接不退出
    select {}
}

关键变更说明

  • 导入路径调整为github.com/googollee/go-socket.io/client,对应新版本的客户端包
  • 创建客户端需传入client.Options配置,不能再传nil,至少指定传输方式
  • 连接成功的事件名从connection改为connect,和Socket.IO官方客户端保持一致
  • 添加select {}阻塞主协程,避免程序启动后直接退出

验证运行

  1. 启动Node.js服务器:
node server.js
  1. 运行Go客户端:
go run main.go

此时Node.js控制台会输出客户端的socket ID,Go客户端也会打印连接成功的信息。

内容的提问来源于stack exchange,提问作者KAS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:33:12