内容简介:软件环境:Goland之前用纯逻辑垒完了一个可登入登出的在线多人聊天室(
软件环境:Goland
一、目的
之前用纯逻辑垒完了一个可登入登出的在线多人聊天室( 代码仓库地址 ),这次学习了Protobuf协议,于是想试着更新下聊天室的版本。
主要目的是为了掌握Protobuf的使用。
二、设计思路
通过Protobuf中内置好的编码函数,将要发送的数据进行编码,之后在“编码后的”数据前加入协议号和报头,再转码通过Write与Read函数进行数据的发送和接收。
1,先写好服务端中的监听(Listen)端口函数与客户端上的网络拨号(Dial)函数;
2,客户端,对数据进行解码;
//客户端,对接收到的数据进行解码 newTest := &protocol.Conn_ToS{} err = proto.Unmarshal(msgdata[0:msgdata_read],newTest) if err != nil{ log.Fatal("unmarshaling error:",err) } fmt.Println(newTest.GetNickname(),newTest.GetMsg())
3,服务端,接收消息;
//服务端,接收到信息并遍历Map发送消息 datamsg := make([]byte,255) datamsg_read ,err := conn.Read(datamsg) if datamsg_read == 0 || err != nil{ continue } fmt.Println(datamsg[0:datamsg_read]) for _,v := range ConnMap{ v.Write(datamsg[0:datamsg_read]) }
三、注意点
1,注意字节处的拼接,建议使用 append函数 ;
2,处理连接处注意 对数据编码解码的处理 ;
3,设置Map存所有连服务端的客户端连接,并到需要时遍历输出和转发消息至Map中所有的连接;
四、效果
Server端
Client1端
Client2端
Client3端
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go语言项目实战:多人聊天室
- h5聊天室模板|仿微信聊天室html5
- 实战swoole【聊天室】
- Netty网络聊天(一) 聊天室的实战(最易懂)
- 如何快速实现一个聊天室?
- 搭建Websocket简易聊天室
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML and CSS
Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99
Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!