在訪客進入聊天界面的時候,就要呼叫介面生成一個唯一ID標識
然后前端鏈接WebSocket的時候,傳遞這個訪客ID進來
如果你想在前端訪客連接時生成一個 UUID,可以使用 Go 語言的第三方庫來生成 UUID,
推薦使用 github.com/satori/go.uuid 庫,它是一個簡單易用的 UUID 生成庫,支持生成常用的幾種 UUID 版本,
例如,你可以使用下面的代碼生成一個 UUID V4:
package main import ( "fmt" "github.com/satori/go.uuid" ) func main() { u := uuid.NewV4() fmt.Printf("UUID: %s\n", u) }
在進入界面的時候,呼叫介面,介面中生成好訪客ID,然后帶著訪客ID GET請求鏈接WebSocket
package main import ( "net/http" "github.com/gin-gonic/gin" "github.com/gin-gonic/websocket" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } // 定義一個全域的 map 型別變數來保存連接 var connections = make(map[string]*websocket.Conn) func main() { r := gin.Default() r.GET("/ws", func(c *gin.Context) { conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { http.NotFound(c.Writer, c.Request) return } // 獲取訪客 ID visitorID := c.Query("visitor_id") // 將連接保存到全域變數中 connections[visitorID] = conn for { // 讀取訊息 _, message, err := conn.ReadMessage() if err != nil { delete(connections, visitorID) break } // 發送訊息 err = conn.WriteMessage(websocket.TextMessage, message) if err != nil { delete(connections, visitorID) break } } })
這樣就可以在程式的其他地方,拿著訪客ID去給指定的訪客發送訊息,或者使用for回圈去廣播訊息
var connections = make(map[string]*websocket.Conn)
唯一在線客服系統
https://gofly.v1kf.com
十年開發經驗程式員,離職全心創業中,歷時三年開發出的產品《唯一客服系統》
一款基于Golang+Vue開發的在線客服系統,軟體著作權編號:2021SR1462600,一套可私有化部署的網站在線客服系統,編譯后的二進制檔案可直接使用無需搭開發環境,下載zip解壓即可,僅依賴MySQL資料庫,是一個開箱即用的全渠道在線客服系統,致力于幫助廣大開發者/公司快速部署整合私有化客服功能, 開源地址:唯一客服(開源學習版) 官網地址:唯一客服官網轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541423.html
標籤:其他
