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。
