如何开发一个简单的聊天APP?

 我来答
猪八戒网
2023-04-03 · 百度认证:重庆猪八戒网络有限公司官方账号
猪八戒网
猪八戒网(zbj.com)创建于2006年,现已形成猪八戒网、天蓬网和线下八戒工场的“双平台+一社区”服务模式,是中国领先的人才共享平台。
向TA提问
展开全部


写服务端(整体设计思路):

服务端主要实现一下功能:

1、处理客户端登陆请求;

2、处理客户端设置请求(改密码、设置自身昵称、设置留言等);

3、处理客户端发送信息(包括文字、图片、表情)请求;

4、处理客户端发送文件请求(包括发送离线文件请求);

5、处理客户端聊天记录下载请求;

6、处理客户端查询用户列表、加好友等请求;

以上各个功能点围绕“网络通信”和“数据库维护”两个基本点展开:


任务处理逻辑:

使用windows完成端口+线程池技术实现网络通信,可以使用现成的网络库,当新的请求报文到达时,实例化对应的任务类,并投递到一个任务队列中;该任务队列使用信号量内核对象来维护,当有新的任务时,从线程池中激活一个线程去执行该任务。

业务逻辑细则:

1、当客户端接入,但超过n分钟未登陆,服务端主动断掉该客户端,已节约服务端资源;

2、当客户端登陆,在数据库中记录该用户的IP地址以及端口号,并记录登陆状态,表明该用户已经登陆,对于已经登陆的客户端,不允许重复登陆。当客户端注销、主动挂断、被动挂断等事件发生时,清除该用户的登陆状态。

3、当客户端发送消息传送请求时,先判断目的用户是否在线,如果在线,直接将消息转发到目标用户所在客户端IP/端口;否则,存入数据库,当目标用户登录时,择时进行推送。

4、当客户端发送文件请求时,如果双方均在线,则服务器首先协调双方客户端进行直连,如果直连成功,发送方直接给接收方发送文件,服务端不介入数据转发;如果直连不成功,或者接收方不在线,服务器要求客户端首先传送文件验证信息,目的是对要发送的目标文件进行查询,如果服务端已经存在相同的文件(文件名相同、大小相同、MD5校验相同),则通知客户端无需上传,同时在数据库对已存在的文件引用计数+1;如果服务端不存在该文件,则通知客户端发送文件并接收。

5、收到客户端下载聊天记录请求时,服务端从数据库中查询改用户的聊天记录,并分页传送给客户端。

写客户端:

任何报文请求遵循下列步骤:

发送请求报文---等待服务端处理结果---对结果进行处理。


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式