這次的就直接發放代碼截圖吧,應該是用go語言做后臺一個簡易的聊天,這里沒用到什么特別的知識,最樸實的來實現效果,主要目的是分享下h5怎么用websocket,go搭建websocket服務的主要部分。
go代碼部分:
// WebChat project main.gopackage mainimport ( fmt net/http time encoding/json strings golang.org/x/net/websocket //全局信息var datas Datasvar users map[*websocket.Conn]stringfunc main() { fmt.Println( 啟動時間 ) fmt.Println(time.Now()) //初始化 datas = Datas{} users = make(map[*websocket.Conn]string) //綁定效果頁面 http.HandleFunc( / , h_index) //綁定socket方法 http.Handle( /webSocket , websocket.Handler(h_webSocket)) //開始監聽 http.ListenAndServe( :8 , nil)func h_index(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, index.html )func h_webSocket(ws *websocket.Conn) { var userMsg UserMsg var data string for { //判斷是否重復連接 if _, ok := users[ws]; !ok { users[ws] = 匿名 userMsgsLen := len(datas.UserMsgs) fmt.Println( UserMsgs , userMsgsLen, users長度: , len(users)) //有消息時,全部分發送數據 if userMsgsLen 0 { b, errMarshl := json.Marshal(datas) if errMarshl != nil { fmt.Println( 全局消息內容異常... ) break for key, _ := range users { errMarshl = websocket.Message.Send(key, string(b)) if errMarshl != nil { //移除出錯的鏈接 delete(users, key) fmt.Println( 發送出錯... ) break datas.UserMsgs = make([]UserMsg, 0) fmt.Println( 開始解析數據... ) err := websocket.Message.Receive(ws, data) fmt.Println( data: , data) if err != nil { //移除出錯的鏈接 delete(users, ws) fmt.Println( 接收出錯... ) break data = strings.Replace(data, /n , , 0) err = json.Unmarshal([]byte(data), userMsg) if err != nil { fmt.Println( 解析數據異常... ) break fmt.Println( 請求數據類型: , userMsg.DataType) switch userMsg.DataType { case send : //賦值對應的昵稱到ws if _, ok := users[ws]; ok { users[ws] = userMsg.UserName //清除連接人昵稱信息 datas.UserDatas = make([]UserData, 0) //重新加載當前在線連接人 for _, item := range users { userData := UserData{UserName: item} datas.UserDatas = append(datas.UserDatas, userData) datas.UserMsgs = append(datas.UserMsgs, userMsg)type UserMsg struct { UserName string Msg string DataType stringtype UserData struct { UserName stringtype Datas struct { UserMsgs []UserMsg UserDatas []UserData}html代碼部分:
!DOCTYPE html html head title /title meta name= viewport content= width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no !-- 新 Bootstrap 核心 CSS 文件 -- link rel= stylesheet href= //cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css script src= //cdn.bootcss.com/jquery/1.11.3/jquery.min.js /script !-- script src= //cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js /script -- /head body div div 內容: /div div id= divShow !-- div >效果圖:
以上就是html5使用go+websocket搭建websocket服務的實例的詳細內容,其它編程語言
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答