这次的就直接发放代码截图吧,应该是用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服务的实例的详细内容,其它编程语言
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答