XMPP 搭建系统的 小结

53 篇文章 0 订阅
49 篇文章 0 订阅

框架选用

  • 服务器使用的是openfire的开源框架
  • iOS使用的是xmppFramework 见下文
  • Android使用的是smack (aSmack 已经弃用,目前使用的是 smack )
  • 本文不过多记录实现,具体实现自行百度。

目标

1 服务器
  • 用户的创建
  • 用户的注销
  • 群组的创建
  • 群组的注销
  • 好友的添加
  • 好友的删除
  • 用户信息设置获取
  • 支持私聊推送
2 手机端
  • 基本收发
    • 文本 TextMessage
    • 图片 ImageMessage
    • 语音 VoiceMessage
    • 位置 LocMessage
    • 短视频 VideoMessage
    • GIF GifMessage
  • 用户信息的更新 主要是头像
  • 消息的本地数据库存储 (服务器不存储消息)
  • 支持群和私聊
  • 支持好友管理
  • 支持私聊推送

定义

  • 图片、语音、短视频、gif 都是通过base64转码解码完成传输,这样不占用服务器资源。
  • 消息本地存储,也就是删除app或者换手机 获取不到历史记录 类似微信。
  • 群聊天会话由服务器管理,本地更新。私聊聊天会话app管理。

手机端大致需要的表及字段

消息表

messageId // 唯一标示 建议用时间戳
userId // 当前用户ID
chatId // 该消息归属会话ID
sendTime
text
messageState //消息状态 发送中 失败 成功
messageType //消息类型
bubbleMessageType //收or发
imageName
imageWidth
imageHeight
imageData //可以复用text字段
videoName
videoData //可以复用text字段
voiceName
voiceData //可以复用text字段
voiceDuration
locationName
lon
lat
gifName
gifData //可以复用text字段
gifWidth
gifHeight

用户表

userId userName nickName header sex checkUpdate
//checkUpdate 的作用见下文。

会话表

userId chatId title url info chatType

//chatType 现目标支持两种:群聊(group)私聊(private)。
//当chatType=group时 实际上chatId为群聊ID 相反则为 聊天对象的userId
好友表

pkid userId friendId contactsGroupId;
//pkid 主键 contactsGroupId 好友群组ID 注意:和聊天群不是一个意思。

好友群组表

contactsGroupId contactsGroupName;

群成员表

chatId userId;

消息收发及显示流程的简单描述
成功
失败
开始
发消息
收消息
插入DB消息state为发送中
发送结果回调
更新DB消息state为成功
更新DB消息state为失败
通知界面刷新
读取DB
界面刷新
用户信息更新
checkUpdate==0
checkUpdate==1
成功
失败
程序启动
设置DB全体用户信息checkUpdate为0
当需要用户信息时
DB获取用户信息
更新用户信息
判断
网络请求用户信息
不再请求
设置此用户checkUpdate为1
DB存储用户信息
xmpp一些字段的使用
type:
  • 聊天 chat 仅处理type节点为chat
body:

消息内容 对应 text字段

可以自己添加节点字段。


file base64字符串
fileType 文件格式
messageType

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值