Go SDK Demo 运行指南
Go SDK 的仓库里带一个单二进制的演示程序 demo/:不需要任何前端构建步骤,启动后在浏览器里就是一个完整可用的聊天界面,用来在写代码之前体验 SDK 的全部客户端能力,也可以当作 im.Client 的调用参考实现。
运行环境
- Go 1.26.5 或以上(与 SDK 的
go.mod一致,无第三方依赖); - 一个可访问的 IM 服务端地址;
- 应用下至少两个用户账号(Demo 使用密码登录,双账号才能互发消息)。测试账号可以在控制台创建,或由业务服务端通过用户管理 API 创建。
这是客户端 SDK的用户登录 Demo,不需要 Client Secret 或签名回调。使用应用凭据、接收签名回调的示例见 Go 服务端 Demo。
下载与启动
下载客户端 SDK + Demo ZIP · SHA256 校验文件
解压后进入 deeprespond-im-go-sdk-1.0.2,执行:
go run ./demo --api http://127.0.0.1:18480 \
--app-key '组织#应用' --addr 127.0.0.1:8090SDK 与页面已包含在包中,只需要 Go 和可访问的 IM 服务。在下载包或独立 GitHub 仓库的根目录运行上述命令;使用 IM 单体仓库源码时才需要先进入 sdk/go。 业务工程接入方式见快速集成。
也可以在 deeprespond-im-go-sdk-1.0.2 目录编译为二进制:
go build -o godemo ./demo
./godemo --api http://127.0.0.1:18480 --app-key '组织#应用' --addr 127.0.0.1:8090Windows 使用 go build -o godemo.exe ./demo,再运行 godemo.exe。
启动参数
| 参数 | 环境变量 | 缺省 | 说明 |
|---|---|---|---|
--api | http://127.0.0.1:18480 | IM 服务端 REST 地址,WS 地址由它推导 | |
--app-key | APP_KEY | 应用标识(组织#应用),缺省时启动报错 | |
--addr | :8090 | Demo 的 HTTP 监听地址 | |
--debug | 关闭 | 打印 SDK 调试日志(连接、重连、事件) |
浏览器连接 Demo,IM REST / WebSocket 请求由 Go 后端发起;--api 必须能从运行 Demo 的机器访问。IM 使用 https:// 时,SDK 的长连接使用 wss://。为 Demo 本身配置 HTTPS 反向代理时,需要同时转发 WebSocket 升级请求。
使用
- 浏览器打开
http://127.0.0.1:8090(端口取--addr); - 用应用下的用户名密码登录;
- 每个浏览器会话(cookie)是一个独立的 IM 登录,双账号互聊请用一个普通窗口加一个无痕窗口(同一浏览器的多个标签页共享登录)。
两套 Go Demo 都使用 demo_sid Cookie;同一主机上切换客户端与服务端 Demo 时也要使用独立浏览器上下文。
已覆盖的功能
密码登录与错误提示、查找用户与好友申请、单聊/群聊收发(文本、图片、引用回复)、已读回执、正在输入、消息回应(👍/❤️)、撤回与删除、草稿、置顶与免打扰标记、群创建与管理、设备管理(吊销会话后被踢下线)、修改资料与退出登录。页面为窄视口做了自适应,手机浏览器也可以直接体验。
Demo 的架构
Demo 是理解 Go SDK 使用方式的最好样例:单进程内,每个浏览器会话持有一个独立的 im.Client,页面通过 WebSocket 连到 Demo 后端,wsbridge.go 把页面协议映射为 SDK 调用,SDK 事件再以 push(bootstrap/convs/msgs/typing/kicked 等)实时下发给页面。
浏览器 ⇄ demo 后端(HTTP + WebSocket 桥)⇄ im.Client(Go SDK)⇄ IM 服务端把机器人接入真实业务时,可以去掉桥与页面,直接在你的程序里调用 im.Client,见快速集成与事件、同步与 Store。
排查与运行边界
| 现象 | 检查 |
|---|---|
| 找不到模块或 Go 版本不符 | 在解压目录的 deeprespond-im-go-sdk-1.0.2 中启动,并检查 Go 是否为 1.26.5 或以上 |
| 启动提示缺少 AppKey | --app-key 或 APP_KEY 是否为 组织#应用 |
| 登录失败 | IM 地址、账号所属应用、密码与应用密码登录策略 |
| 两个窗口总是同一账号 | 换成不同浏览器或无痕上下文,标签页共享 Cookie |
| 登录后收不到消息 | 双方连接是否完成,Demo 后端能否访问 IM WebSocket 入口 |
| 端口被占用 | 更换 --addr 并使用对应浏览器地址 |
Demo 的浏览器会话和 SDK 缓存均在内存中,重启后重新登录;退出登录会结束真实用户会话。 它演示客户端消息能力,不包含音视频、聊天室或服务端管理回调。 源码结构与测试入口见 Demo README。
