用Kotlin模仿QQ2006实现的聊天工具。
- Kotlin版本:1.4.21
- 数据库:MySQL8.0.31
- 数据持久层框架:Exposed
- 项目构建工具:Gradle
QQ项目工具分为有客户端和服务器端,客户端和服务器端都提供了很多工作协程,这些协程帮助进行后台通信等处理。
客户端由聊天用户和工作协程完成工作,客户端主要功能如下:
【1】用户登录。用户打开登录窗口,单击登录按钮登录。客户端工作协程向服务器发送用户登录请求消息,客户端工作协程接收到服务器返回信息,如果成功界面跳转,是否弹出提示框,提示用户登录失败。
【2】打开聊天对话框。用户双击好友列表中的好友,打开聊天对话框。
【3】显示好友列表。当用户登录成功后,客户端工作协程接收服务器端数据,根据数据显示好友列表。
【4】刷新好友列表。每一个用户上线(登录成功),服务器会广播用户上线消息,客户端工作协程接收到用户上线消息,则将好友列表中好友在线状态更新。
【5】向好友发送消息。用户在聊天对话框中发送消息给好友,服务器端工作协程接收到这个消息后,转发给用户好友。
【6】接收好友消息。客户端工作协程接收好友消息,这个消息是服务器转发的。
【7】用户下线。单击好友列表的关闭窗口,则用户下线。客户端工作协程向服务器发送用户下线消息。
服务器端所有功能都是通过服务协程工作协程完成的,没有人为操作,服务器端主要功能如下:
【1】客户用户登录。客户端用户发生登录请求,服务器端工作协程查询数据库用户信息,验证用户登录。用户登录成功后服务器端工作线将好友信息发送个客户端。
【2】广播在线用户列表。用户好友列表状态是不断变化的,服务器端会定期发送在线的用户列表,以便于客户端刷新自己的好友列表。
【3】接收用户消息。用户在聊天时发送消息给服务器,服务器端工作协程一直不断地接收用户消息。
【4】转发消息给好友。服务器端工作协程接收到用户发送的聊天信息,然后再将消息转发给好友。