QT + Tigase

项目背景

因为企业内部无外网,需要一个内部通讯工具,考虑买RTX或者内部开发一个,前期做相关技术调研,评估自己实现难度。定的技术方案PC端使用QT做界面,服务端使用Tigase,使用XMPP通讯。主要功能有:单聊、群聊、组织结构、文件、图片发送。

QT使用

QT使用qml做页面,其他相关逻辑采用c++,与服务端通讯采用QXMPP框架。
因为没用QT开发过,在github上找到WinT-Messenger开源项目,了解相关代码编写。

在使用QT过程中,主要难点在于:

  1. 布局:需要了解熟悉QT的各种布局
  2. c++与QML直接通讯,c++与服务端通讯
  3. QT相关常用组件 在开发界面时,因不熟悉qml,刚开始使用Rectangle,设置随机颜色画出基本页面以及布局。之后把不同的功能抽取做出相应的组件。

Tigase使用

Tigase采用的是Java开发,可以参考官方文档。不过在开发过程中出现问题第三方资料较少。

Tigase采用的是7.1.2,群聊采用的是tigase muc组件。在之前规划中,没有好友一说,直接通过组织结构聊天,只有最近联系人。
Tigase面临的问题:

  1. 最新版muc组件为2.4.1,群聊保存在内存中,可参考muc最新未正式发布的源码中重写群聊存入数据库,设计群聊数据库(群可视为特殊用户)
  2. 用户退出账号默认退出群聊,需修改相关逻辑
  3. 修改保存用户最近联系人,用户登录后,查询其最近联系人,设计最近联系人数据库
  4. 开发自己插件,配合组织结构查询
  5. 通过groovy脚本添加文件上传,返回上传文件后地址。

总结

在使用过程中,有时因为相关资料不多需要调试源码解决问题,对于收获还是有的。
c++使用较为困难,当前做出了单聊、群聊、以及部分组织结构。之后因为公司决定使用钉钉,该项目被废弃。