国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

html5使用go+websocket搭建websocket服務的實例

2020-03-24 16:13:32
字體:
來源:轉載
供稿:網友

這次的就直接發放代碼截圖吧,應該是用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服務的實例的詳細內容,其它編程語言

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都匀市| 河曲县| 乐业县| 正宁县| 育儿| 鹤山市| 哈巴河县| 冷水江市| 西和县| 泽州县| 道孚县| 行唐县| 根河市| 齐齐哈尔市| 阜新| 桃园县| 台江县| 三江| 北安市| 武城县| 玉环县| 固阳县| 和平区| 富川| 新干县| 安顺市| 耿马| 融水| 沙湾县| 马龙县| 徐闻县| 临颍县| 石柱| 北京市| 扎鲁特旗| 盖州市| 淮滨县| 沁水县| 鄂托克旗| 巨野县| 新宁县|