前言:
1.及时通讯开源协议:xmpp
2.较好的开源协议的实现:tigase、openfire
3.鉴于openfire有成套的后台程序以及客户端程序,部署简单且快速,推荐即时通讯服务端开发的新人优先采用openfire进行二次开发
项目说明:项目为一款职业社交app,客户端功能模块有焦点新闻(首页),群组(可以在没有成为群好友的情况下浏览群消息并评论收藏群消息),会议(可以在没有成为会议参与用户的情况下浏览会议消息并评论收藏会议消息),个人中心(关注,粉丝,私信,收藏,动态);
项目分析:项目并非单纯的聊天工具,可以对聊天信息进行评论、收藏、可以从收藏的信息中跳转到具体的群组(或会议)的具体信息位置、服务端要记录聊天信息内容;客户端用户不关注其他用户是否在线;所以聊天属性其实仅有群组(会议)中及时接收到消息这一个属性;而且openfire系统复杂、表数量众多;顾不适宜全部开发openfire插件的形式实现功能,而是提供一个业务服务器和一个openfire服务器来共同担任后台服务器更为合适;openfire仅负责维护客户端socket链接的session以及发送消息给客户端;其他客户端的所有交互操作由业务服务器提供。
具体的架构细则如下:
系统架构: 1.openfire只是利用他的链接管理功能以及消息路由发送功能; 2.所有业务逻辑都在业务服务器中自行开发实现(包括聊天室创建、用户管理、客户端聊天信息接受) 3.所有的消息发送、评论发送等都发送到业务服务器;业务服务器处理后再转发到openfire服务器,openfire负责将消息路由至对应的客户端 4.of服务器的作用:接受客户端登陆以记录客户端的socket session、定时发送ping包给客户端以确保客户端仍然在线、接收业务服务器传递过来的消息并路由给对应的客户端(在线则直接发送,不在线则通过推送消息发送),发送消息给客户端并记录客户端的应答(发送完则状态为未接受并置入缓存;接收到回执则状态为已接收从缓存中消息、如果超过1分钟仍然未接收到回执则视用户已经离线关闭用户session并将消息存储到离线表并推送给用户) 5.客户端需要存储信息记录,客户端信息记录的前后查询优先从本地获取,本地无记录则从业务服务器上下拉至本地 6.业务服务器用户信息有id、uuid(第三方平台的id)、source(第三方平台)、devicetype、key(供openfire当做密码使用);openfire用户信息有id(用户名)、key(密码) 7.用户发送到群组的消息再业务服务器接收到后保存再业务服务器数据库中,业务服务器发送消息给of服务器,of服务器将消息分发给已经加入群组的用户;未加入群组的用户围观消息时在消息界面定时从业务服务器拉取服务器最新消息 8.群聊流程:客户端用户a发送群消息》业务服务器接收群消息并给客户端回执(入库),转发群消息》openfire接收业务服务器的群消息(查找群用户并给每个用户发起一个路由信息)》客户端用户b接收到群消息并给openfire服务器回执; 8.1客户端发送消息时如果没有收到回执则标记信息状态为发送失败,用户点击后可以重发; 8.2openfire发送消息给客户端时记录到消息缓存中,如果超过1分钟仍然没有接收到消息回执,则将消息记录到离线信息表; 8.3客户端每次链接openfire成功后先获取离线消息并保存到本地数据库 8.4客户端接收到的openfire消息需要对比下消息id,如果消息id重复则不入库(避免openfire服务器没有接收到消息回执导致重新发送消息的情况) 8.5业务服务器接收到的客户端消息需要对比下消息id,如果消息id重复则不入库并且不转发给openfire服务器(避免客户端没有接收到消息回执导致重新发送消息的情况)
部署环境:
centos 6;mysql 5;redis 缓存;memcache二级缓存;openfire消息服务器;tomcat服务器;nginx前端代理
相关推荐
3. **智能咨询APP的架构**:该APP设计包含了三个主要模块:资讯模块、消息模块和个人中心。资讯模块允许用户查看校园新闻和信息,而管理员则可以在后台进行管理。消息模块分为即时聊天和咨询功能两部分,其中咨询...
如果应用不需要后台执行能力,开发者可以选择禁用这一功能,从而减少不必要的系统负载。 ### 处理应用状态转换策略 #### 启动时的操作 当应用首次启动时,开发者需要执行一些初始化任务,如加载初始数据、设置...
E聊Android即时通信APP简易版源码是一款专为开发者和学习者提供的开源项目,它涵盖了基本的即时通讯功能,旨在帮助用户快速理解并构建自己的聊天应用。在这个项目中,我们可以深入学习以下几个重要的知识点: 1. **...
至于"FunSchool"这个文件名,可能是APP的某个模块或者版本号,具体的功能可能包含学校的课程信息、活动公告、学习成绩查询等。如果APP需要推送通知,还会涉及Firebase Cloud Messaging (FCM) 或者阿里云推送服务,...
基于安卓平台的外卖APP开发与设计是一个涵盖多个技术领域的复杂过程,涉及到用户界面设计、后台系统架构、数据库管理、网络通信等多个方面。以下将详细探讨这些关键知识点。 1. **用户界面(UI)设计**:一个好的...
- **模块化**:MAL架构的核心是将复杂的应用程序分解为多个独立的模块,每个模块负责特定的功能。这样可以提高代码的可读性和可复用性,便于团队协作和后期维护。 - **依赖管理**:通过合理的模块间依赖配置,避免...
基于树莓派的智能家居系统的设计和实现是一门融合了计算机科学技术、网络技术、传感技术及数据分析等多个领域的复杂工程。该系统通过树莓派(一种低成本、小型化的计算机)作为中心控制器,并借助手机客户端实现对...
- 微信开发者工具提供实时编译和预览功能,便于在开发过程中及时发现问题。 - 通过工具进行版本管理,提交代码至微信后台,经过审核后即可发布到线上。 总之,微信聊天微信小程序源码涉及到前端开发的多个方面,...
- 需求详单:附件二《XXXXAPP功能需求表》列明具体架构和指标。 4. **项目工期**: - 开发时间:UI设计确认后65个工作日完成。 - 工期调整:法定节假日顺延,因乙方原因延误按协议处理,如有第三方审查需延长...
标题中的“基于ARM的无线物联网式便携式环境质量检测仪-APP.rar”指的是一个使用ARM架构处理器,并结合无线物联网技术的便携式设备,用于实时监测环境质量的应用程序。这个应用程序可能包含数据采集、传输、处理和...
由于只有一个文件名:"2021031703_基于Android的焦点新闻APP的设计与实现",我们可以推断这可能是一个综合性的文档,包含了项目的所有细节,如需求分析、系统架构、界面设计、数据管理、网络通信、用户交互等多个...
在功能实现上,生活助手APP需要包含以下组件: 1. 多功能计算器:提供基本的数学运算以及可能的高级计算功能。 2. 电话簿、打电话和发短信:集成Android的通信功能,允许用户存储联系人信息,拨打电话和发送短信。 3...
2. **Desk**:Frappe的内置后台管理系统,提供丰富的管理和调试工具。 3. **App Store**:Frappe Apps包含大量预建的应用模块,如CRM、ERP、HR等,可直接安装使用或作为开发基础。 4. **社区支持**:活跃的开发者...
5. **后台服务器架构**:为了处理大量的用户请求和数据交换,应用的后端可能采用了分布式系统设计,包括负载均衡、数据库集群、缓存机制等,以确保服务的稳定性和高效性。 6. **数据库设计**:数据存储是关键,可能...
- `app`模块:包含了应用程序的主要代码,包括Activity(用户界面)、Fragment(界面组件)、Service(后台服务)以及各种Helper类和Adapter(数据适配器)等。 - `library`模块:可能包含了一些自定义的库或者第三...
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...
9. **测试代码**:如果源码包含测试目录(如`app/src/test`),可以学习到单元测试和集成测试的编写方法,如JUnit、Espresso等测试框架的使用。 10. **版本控制**:如果源码是从Git仓库获取,查看`.git`目录可以...
9. **多线程**:为了保证用户体验,复杂的后台任务通常在后台线程执行。Swift支持GCD(Grand Central Dispatch)和Operation Queues等多线程技术。 10. **单元测试与持续集成**:对于一个商业运营级应用,单元测试...
9. **异步任务和后台处理**:项目可能采用AsyncTask、IntentService或现代的JobScheduler、WorkManager进行后台任务处理,确保用户界面不被阻塞,同时保证数据的及时更新。 10. **权限管理**:考虑到Android 6.0...
1. **Android系统架构**:Android系统分为四个主要层次,包括Linux内核、系统库、运行时环境以及应用程序框架。理解这些层次及其相互关系是开发的基础。 2. **Java与Android**:Android应用主要用Java语言编写,...