三、基础知识
3.1 Android
Android 是一个基于 Linux 的移动平台的操作系统,它是开源的,开发者可以按照一定的规则自由地对其进行定制开发。Google 提供了一套完整的的规范化的开发平台和开发体系,开发者通过 Google 提供的系统 API 和系统机制可以方便地开发出各种各样的应用软件。
3.2 PHP
PHP 是一种通用脚本语言,主要用于生成动态网页内容、操作服务器上的文件和数据库、数据加密、用户授权访问等。PHP 凭借其开源、免费、易学、服务器兼容性好、跨平台等特性,被称为“世界上最好的语言”。PHP 拥有超过 150 个扩展库,可供开发人员调用,很大程度上提高了开发效率和代码的性能,例如 PDO 扩展,它提供了 PDO 类来对数据库进行访问,开发人员使用不同数据库时候调用的函数名是相同的,使得应用层不用去关心具体要连接的数据库服务器的类型,除此之外,相比原生 MySQL,可以有效防御 SQL 注入攻击。
3.3 JavaScript
JavaScript 是一种解释型脚本语言,它是弱类型、函数优先的,一般作为开发网页的脚本语言,在其他环境也有使用。随着当前网站开发前后端更严格的分离,JavaScript 负责越来越多的业务逻辑检查、处理等工作,而不仅仅是单纯的 DOM 操作和实现网站特效。
3.4 React
React 是 Facebook 研发的 JavaScript 库,具有易入门、代码易重构、更好支持响应式网页、高性能等特点。React 的主要原理包括 Virtual DOM、Components、State 和 Render。其中 Virtual DOM 就是在真实 DOM 上面抽象出一个对象,用来表示 DOM 应该怎么呈现,当需要更新页面的时候,不是直接更新真实 DOM,而是更新 Virtual DOM,React 会等到当前事件循环结束,通过 diff 算法计算 Virual DOM 和真实 DOM 的差别,并计算出最小步数来进行更新,从而提高了性能;Virual DOM 的每一个节点就是一个 commponent,它的存在使得 diff 算法更高效;State 包含定义 commponents 所需的数据,当数据改变时,它会调用 Render 进行重新渲染。
3.5 WebSocket
WebSocket 是 HTML5 中的一个新的协议,它和 HTTP 协议基本没关系,HTTP 中每个 response 都对应一个 request,也就是只有客户端主动请求后服务器才会回复,而不能做到服务器主动推送消息给客户端,基于这个原理的 AJAX 轮询和 polling 技术,可以变向实现实时交互,但是性能不佳;而 WebSocket 只需要客户端一次 request,建立持久连接后,服务器便可以主动向该客户端推送任意多次消息,同时较 AJAX 轮询和 polling 技术具有更高的效率和性能。WebSocket.org 对传统的轮询方式和 WebSocket 调用方式做过一个详细的测试和比较,将一个简单的 Web 应用分别用轮询方式和 WebSocket 方式来实现,并把测试结果用柱状图进行表示,如图 2.1。
四、图 2.1轮询和 WebSocket 的性能对比
4.1 GatewayWorker
GatewayWorker 是一个开源的 Socket 服务器框架,用 PHP 编写,该框架采用的是 Gateway 和 Worker 进程模型,它支持分布式部署、支持高并发、支持多种应用层、支持代码热更新、支持 HVVM 协议、提供心跳检测、在 Linux 服务器上可以做到守护进程化。使用该框架,开发者只需要简单配置并通过实现框架内部 Events 类的函数,就可以轻松监听 WebSocket 连接的建立、消息请求、连接断开等事件,并实现消息的单发、群发、广播等功能。
五、需求分析和总体设计
5.1 需求分析
5.1.1 功能性需求
为了方便用户随时随地进行团队沟通,首先需要把用户添加到系统中,因此需要注册、登录功能;
为了映射实际中团队成员之间的关系,需要联系人管理功能,包括联系人的增删查;
为了用户可以有序地加入沟通,并且保证沟通的安全性与私密性,一次团队沟通需要一个授权管理模块,也就是会议管理模块,包括会议的增删改查以及加入会议的密码验证;
为了保证会议内部用户绘画、发言的可控性,需要在会议内部设置一位主持人,并且赋予他管理加会者的权利,因此需要会内权限管理;
为了更加方便邀请别人加入会议,需要多种邀请加会方式;
会议内部主要通过绘画、发言等方式进行信息交互,因此需要共享白板功能和群聊功能。
系统整体的业务流程以用户注册登录为起点。用户进入系统主页面后,可以安排会议,安排好会议可以查看、再次编辑、删除、邀请别人加会、进入会议,以主持人身份进入会议后,可以继续邀请别人加会、锁定会议、共享资源、使用白板、使用群聊、查看参与者列表、控制加会者权限等。以加会者的身份加入会议,可以邀请别人加会、使用白板、使用群聊、查看参与者列表。除此之外,用户还可以添加、删除、查看联系人以及进行一些账户设置操作等。系统业务流程图见图 3.1。
六、图 3.1系统业务流程图
6.1 其他需求
6.1.1 速度
注册验证码必须在 15 秒内发送到用户注册所用邮箱。
登录必须在 5 秒内完成。
所有用户查询必须在 5 秒内完成。
开会、加会必须在 10 秒内完成。
6.1.2 实时性
白板绘画、群聊信息必须在 1.5 秒内同步到会议的其他参与者。
联系人的添加申请、接受申请、拒绝申请、删除、加会邀请通知必须在 2 秒内推送到目标客户端。
6.1.3 安全性
需要保障用户账户安全,防止他人越权访问。
需要保障服务器的数据安全,包括数据库和用户上传文件;
需要保障通信安全,通信数据需要加密,防止传递的信息被他人监听并轻松得到信息的内容。
源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~