用消息队列实现即时通讯

开篇

      突然有一天,横空出现了三四种即时聊天工具,貌似是挑战微信。结合我多年的编程经验,我也想有个大想法,开发一款即时通讯工具。我的目的当然不是挑战谁,而是想对自己多年的编程经验进行一次总结。虽然多年来,从各种语言之间切换过,但是像这样前后端一个人编写,完成一个独立项目还是不多的。为了加大点难度,决定采用django 2.0 的restframework做为后台进行开发,即时通讯采用消息队列(MQTT)协议,客户端暂时只开发Android端,并以公众号或网页的方式将编写过程的文章编写出来并推送。

选型

     MQTT:考虑到只有Windows服务器,而MQTT暂时只是做为消息传输媒介,所以决定采用apollo。至于后期要在MQTT上做二期开发,这是后话。

      服务端:前面也说过以Django的rest_framework进行接口编写,以及admin进行简单的界面以及数据添加管理,暂时也不考虑Web界面。

      客户端:原生Android开发,且采用MVVM框架,以Room持久化库,Lifecycle、Clean Architecture等最新技术进行尝试,网络则是以Rxjava 2和Retrofit进行访问等。

主要功能

1、用户注册、登录

      在没有帐号的情况下,进行注册,然后进行登录等功能。

2、添加好友、群,查看好友、群信息

       通过查找功能,查找好友以及群,并进行添加;查看好友、群可以类似微信a-z进行筛选

3、发起群聊,建群,解散群,拉人入群,踢出群

        类似微信建群等功能

4、聊天功能

        该功能是此应用的主要功能,基本上是以微信为模板,可以单人聊天,可以群聊,聊天可以发送表情,图片,拍摄照片、视频,文件,位置,名片等。

5、扫一扫添加好友,加入群

6、个人资料修改,图像修改,密码修改

7、其他一些附助功能

      文件上传下载,拉取离线消息,鉴权等。

基本上是以微信、QQ等即时聊天工具为蓝图,再结合具体开发而编写出Android端的即时通讯程序,最终结果是以上功能都实现且编写出相关纪录文档。

补充说明

     主要以总结过去经验为主,暂时只是列出大题纲,后续会对前后台开发实现进行一些说明,同时能参照一些书籍规范一下开发文档,制定模板等。为了方便说明,后续文章将以正文和补充材料两大类进行。

希望大家能继续关注后期文章

请关注公众号有更多精彩等你:

 

猜你喜欢

转载自www.cnblogs.com/wavaya/p/10324472.html