如何设计一个简单的聊天APP
浏览量:1138
时间:2024-01-24 13:06:31
作者:采采
1. 服务端设计思路
服务端主要实现以下功能:
- 处理客户端登录请求
- 处理客户端设置请求(更改密码、设置昵称、设置留言等)
- 处理客户端发送信息请求(文字、图片、表情等)
- 处理客户端发送文件请求(包括发送离线文件请求)
- 处理客户端聊天记录下载请求
- 处理客户端查询用户列表、添加好友等请求
上述功能围绕着网络通信和数据库维护展开。任务处理逻辑如下:
- 使用Windows完成端口线程池技术实现网络通信,可以使用现有的网络库。当新的请求报文到达时,实例化对应的任务类,并投递到一个任务队列中。
- 任务队列使用信号量内核对象来维护,当有新的任务时,从线程池中激活一个线程去执行该任务。
具体业务逻辑细节如下:
- 当客户端接入但超过n分钟未登录时,服务端会主动断开该客户端的连接,以节约资源。
- 客户端登录时,在数据库中记录该用户的IP地址和端口号,并标记为已登录状态。已登录的客户端不允许重复登录。当客户端注销、主动挂断或被动挂断等事件发生时,清除该用户的登录状态。
- 客户端发送消息传送请求时,服务端先判断目标用户是否在线。如果在线,直接将消息转发到目标用户所在的客户端IP/端口;否则,将消息存入数据库,在目标用户登录时进行推送。
- 客户端发送文件请求时,如果双方均在线,则服务器协调双方客户端进行直连。如果直连成功,发送方直接向接收方发送文件,服务端不介入数据转发。如果直连不成功或接收方不在线,服务器要求客户端先发送文件验证信息,以查询将要发送的目标文件。如果服务端已经存在相同的文件(文件名、大小和MD5校验相同),则通知客户端无需上传,并在数据库中对已存在的文件引用计数加1。如果服务端不存在该文件,则通知客户端发送文件并进行接收。
- 当服务端收到客户端下载聊天记录请求时,从数据库中查询该用户的聊天记录,并分页传送给客户端。
2. 客户端设计思路
任何报文请求都遵循以下步骤:
- 发送请求报文
- 等待服务端处理结果
- 对结果进行处理
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
Wps2019数据筛选方法详解