开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:海量用户通讯系统-收发消息分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9798
海量用户通讯系统-收发消息分析
内容介绍:
一、完成用户登录-服务器端
二、完成用户登录-客户端
三、发送数据的流程
四、接收数据的流程
一、完成用户登录-服务器端
多人聊天室的一个结构分析,有以下图示可以看到:
服务器
(1)接收用户id,pwd【goroutine】
(2)比较
(3)返回结果
二、完成用户登录-客户端
(1)接收的输入的 id 和 pwd
(2)发送 id 和密码
(3)接收到服务端返回的结果
(4)判断是成功还是失败,并显示对应的页面
三、发送的流程
如图示需要设计消息协议
(1)先创建一个 Message 的结构体
(2)mes.Type=登录消息类型
(3)mesData=登录消息的内容(序列
(4)对 mes 进行序列化
(5)在网络传输中,最麻烦丢包
先给服务器发送 mes 的长度[有多少个字节n],再发送消息本身
四、接收数据的流程
(1)接收到客户端发送的长度 len
(2)根据接收到的长度 ien,在接收消息本身
(3)接收时要判断实际接收到的消息内容是否等于 len
(4)如果不相等,就有纠错协议[后面说]
(5)取到到-反序列化>Message
(6)取出 messageData(string)-反序列化>LoginMes
(7)取出 loginMes.userid和loginMes.userPwd
(8)这时就可以比较
(9)根据比较结果,返回Mess
(10)发送给客户端