开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:海量用户通讯系统——客户端结构改进1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9805
海量用户通讯系统——客户端结构改进1
内容简介
一.客户端结构改进原因
二.如何画出程序框架图
一.客户端结构改进原因
在对服务器端进行分装后,这种结构从拓展功能来说的确具有一定优势,但刚刚只是对服务器端进行了分装,没有对客户端进行改变。
客户端修改与服务器端基本相同,但须注意一个细节,客户端与服务器端一旦成功登陆之后一定要保证客户端与服务器端有一根连接纽带,因为连接是不可以断掉的,所以现在要对客户端进行改进。
二.如何画出程序框架图
1. 画出示意图
第一个框代表客户端,目前客户端的结构比较单薄,只有 login go,main go,utils.go 三个文件,而一个功能一个文件是不合理的,所以必须对客户端结构做出改变。
(1)首先设立一个 main.go ,代表显示第一级菜单,根据用户的输入去调用对应的处理器,一般来讲,总控位于服务器端,所以在客户端没有总控,结构最复杂的文件也都位于服务器端。
(2)直接连接 user process.go,用于处理和用户相关的业务,比如登录、请求注册等功能。
(3)SMS process.go 用于处理数据和短消息相关逻辑,例如私聊、群发等与消息相关的功能。
这些文件之间也是调用的逻辑关系。客户端与服务器端有大量公用的工具,我们需要将这些公用的工具抽取出来。在这里有两种形式,一种是将公用的工具直接下载下来,这种形式有一种弊端,如果是公用的话必须保证同步,否则一方更新,另一方不更新,会出现很大的麻烦。
(4)sever.go。因为客户端登录后不会马上退出,所以他需要显示登录成功的页面,而当我们登录之后,可能会有些人来找我们发起聊天,所以sever.go第二个重要任务就是保持和服务器端的通讯,即启动一个协程,不停地与服务器之间进行交互。例如,当我们登录QQ时,好友上线会发出提示音,而这时我们并没有重复登录,收到提示音的原因就是客户端与服务器之间不停地进行交互。第三点,一旦发现服务器有推送的消息,他需要将页面相应的数据显示在界面上,比如当好友上线时,会有文字提示,您的某位好友已经上线。
以上就是客户端不同文件之间的关系。
现在就需要对以上的信息进行剥离。客户端一般比较简单,因为客户端不是一个数据库,但客户端也比较复杂,比如当退出时,客户端会不会还保留一些文件。比如,在使用腾讯的聊天软件时。即使你退出了,下次登录发现和好友的聊天记录依然还在,或是当你离线时好友发送过来的图片等消息也会保存下来。这就是因为客户端偷偷地以另一个文件作为数据库保存着与用户相关的业务。
以上就是客户端修复的全部思路。