在去年,我们公司内部实现了一个聊天室系统,实现了一个即时在线聊天室功能,可以进行群组,私聊,发图片,文字,语音等功能,那么,这个聊天室是怎么实现的呢?后端又是怎么实现的呢?...,可以忽略xxx的数据,直接联系上下文获得op的命令类型
聊天记录存储
根据消息的类型,我们区分了 私聊消息,群消息,系统消息 3种消息,设计了3个表
为了使得客户端能够正常显示群消息,我们对群成员做了软删除处理...,确保可以获取到群成员头像
用户可通过http接口,获得历史聊天记录
语音,图片,视频聊天
在上面我们可以看到,有一个msgType字段,它将决定了这条数据是文字消息,还是语音,视频
当msgType为语音类型时...":111}
每次推送完,都需要客户端遍历list,进行上面的已接收推送
聊天室流程讲解
整个聊天室流程为:
- 用户http接口登录获得授权
- 通过授权请求http接口获得好友列表,不同好友的最后一条未读消息以及未读消息数...userId,即可获得当前所有在线成员的fd,进行遍历推送
服务端推送问题
当A客户端在群发送一条消息时,由于群成员可能有很多,如果直接同步推送给所有群成员,会造成A客户端等待响应时间过长的情况
所以需要使用