设计B/S 模式的即时通讯软件

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

1.  引言

    目前,即时通讯市场已经从多家竞争时代走向垄断统治时代。大多数即时通讯软件已随着时间的推移逐渐退出竞争舞台。即时通讯软件的用户群也逐渐增多。这标志着即时通讯市场已逐渐走向成熟。
    在即时通讯的发展过程,有两个很重大的特点:
      1、交互的信息日益复杂:从早期的文字、文件、音频到现在日益流行的视频信息。
      2、交互的群体日益普遍:从早期的专业人员到现在的人民大众以及企业级的需求。
    人类对信息的实时性需求,注定即时通讯必将成为历史的潮流,他的广泛性将和移动通讯一样,不可逆转。通过即时通讯,我们可以在网络上,更加方面地交互信息,即时交互一切需要交互的信息。
    随着未来互联网的发展完善,即时通讯将会应用到更多的领域,并且发挥重要的作用。

2.  系统分析
2.1 系统功能要求

    下面将着重对系统功能和设计做详细介绍。主要包括以下四个模块 :用户注册/登录模块、好友列表及状态实时检测模块、单人聊天模块、群组聊天模块、好友查找/添加模块、退出模块。其中用户注册/登录模块包括用户注册、用户登录两个子模块;好友列表及状态实时检测模块包括好友列表更新、好友在线状态检测、新消息检测、状态设置四个子模块;单人聊天模块包括消息发送、消息更新两个子模块;群组聊天包括消息发送、消息更新、群组成员列表更新三个子模块。
   (1) 用户注册/登录模块
    ① 用户注册
    该模块实现用户的注册,用户填写完系统要求的资料后,系统赋予每个用户一个唯一的六位数帐号,并且将所有信息写入数据库。
    ② 用户登录
    该模块实现用户的登录,在验证用户提交的用户名密码后,若验证通过,则将登录标识符设为已登录,若不通过,则返回登录界面。
   (2) 好友列表及状态实时检测模块
    ① 好友列表更新
    该模块实现隔一定时间向服务器请求数据,取得最新的好友列表并将最新内容显示在好友列表里面。
    ② 好友在线状态检测 
    该模块实现隔一定时间向服务器请求数据,取得好友是否在线标识,若用户在线,则显示彩色头像,若不在线,则显示灰色头像。
    ③ 新消息检测
    该模块实现隔一定时间向服务器请求数据,取得用户最后已读信息时间,并对比即时消息发送时间,若为新消息,则发送该消息的好友头像闪动,否则,头像为静止状态。双击头像可打开与该用户的聊天窗口。
    ④ 状态设置
    该模块实现用户可以通过点击单选按钮直接设置自己的在线或隐身状态。
3) 单人聊天模块
    ① 消息发送
    该模块实现在聊天窗口输入文字,点击“发送”按钮或用Ctrl+回车组合键即可发送消息,可设置文字大小、颜色、粗体、斜体、下划线等样式。
    ② 消息更新
    该模块实现隔一定时间向服务器请求数据,取得发给自己的即时消息,并显示在聊天窗口里。
   (4) 群组聊天模块
    ① 消息发送
    该模块实现在聊天窗口输入文字,点击“发送”按钮或用Ctrl+Enter 组合键即可发送消息,可设置文字大小、颜色、粗体、斜体、下划线等样式。
    ② 消息更新
    该模块实现隔一定时间向服务器请求数据,取得即时群组聊天消息,并显示在聊天窗口里。
    ③ 群组成员列表更新
     该模块实现隔一定时间向服务器请求数据,取得该群最新的成员列表,并显示在聊天窗口的成员列表里面。
   (5) 好友查找/添加模块
     该模块实现用户可通过输入用户号码或昵称等条件来搜索好友,并实现对搜索出的用户的资料查看和添加好友功能。
   (6) 退出模块该模块实现在用户关闭在线聊天窗口或点击“退出”时将用户的状态设置为离线并且返回登录界面。

2.2 系统的可行性分析

    制作系统前,在充分调研的基础上做出系统的开发目标,即系统建立后所要求达到的运行指标,这是系统开发和评价的依据。系统充分考虑了用户对软件功能的需求,为系统设计了一些实用关键的功能。不足之处是,系统目标不可能在短时期内就会实现的非常具体 , 它还将在以后的开发、维护过程中逐步被完善。但从总体上看,系统拥有较强的可行性。系统的目标确定后,从以下几个方面对系统的实现进行可行性分析:

2.2.1  技术可行性

    系统用到的硬件、软件性能要求、环境条件都是能具体实现的,再加上对开发系统所用到的技术做了进一步的研究,遇到困难时得到了指导老师和同学的协助,所以说在技术方面是可行的。

2.2.2  经济可行性

    相关技术书籍可以在学校图书馆借到或在书店买到,并且设计开发系统的电脑可以在机房免费使用,所以要完成该系统在经济上是可以承受的。

2.2.3  运行可行性

    系统的主要功能开发完以后,对系统进行了调式,运行的结果基本能达到用户的要求,相信在以后进一步的完善中会得到令人更加满意的结果,尽管目前系统还有需要改进的地方,但是初步的结果表明运行方面是可行的。按上述几个方面进行可行性分析、研究后,得到结论:系统开发是可行的。

2.3 系统特点

    运行速度快、效率高、界面友好、注重用户体验、操作方式与主流IM 软件类似;并且该系统不需要用户安装客户端,通过WEB 浏览器即可使用其所有功能[3]。

3.  系统总体设计

3.1 系统总体设计

    基于B/S 模式的即时通讯软件的设计开发遵循一个原则,就是紧密地结合用户的需求和体验。该系统是在PHP+MySQL 环境下进行开发的,设计了多个模块,由Ajax 技术实现其数据的实时传输,利用客户端的动作触发JS 函数实现大部分功能。

3.1.1 系统结构图 

    在系统的概要设计阶段,最主要的就是确定系统的整体结构。确定了系统的总体结构,也就相当于确定了系统的总体目标,根据这个总体目标,再一一设计各子模块。系统总体结构图如图1:

 4.  数据库设计

     在设计应用程序之前,应先组织数据。通过建立数据库来管理数据,既能增加数据的可靠性,也便于系统的开发。创建数据库的优点:创建数据库是实现数据集成的有效手段,数据库按一定的结构集中了应用系统中的数据,使之更便于统一管理;可以定义数据词典的功能;允许在数据库中建立永久关系。
        数据库设计的任务是确定系统所需的数据库。数据库是表的集合,通常一个系统只需一个数据库。数据库设计可分为逻辑设计与物理设计两个步骤。第一步确定数据库所包含的表及其字段。第二步确定表的具体结构,即确定字段的名称、类型及宽度;此外还要确定索引,为建立表的关联准备条件。

4.1 数据库逻辑设计

    即时通讯软件要处理大量的信息或数据,为了使信息的存取、管理工作更加方便、安全、快捷,特别为该系统设计了一个数据库,并且设置了许多数据库表,目的是为了节省服务器空间,便于用户的查询和管理。 本系统的数据库表为:users(用户信息表)、friendlist(好友信息表)、groups(群组信息表)、grouplist(群组成员信息表)、chatlist(个人聊天信息表)、readflag( 已读信息标识表)、glist(群组 聊天信息表)。这些表中都存在一个主键id,id 是唯一的,不能重复,这样可以保证数据录入的准确性,系统中的id 可自动增加的,每设置即添加完一条记录后,id 会自动加1,避免在输入时会重复输入同一个id,造成数据的丢失。同时建立外键以实现数据完整性的约束。

 4.2  数据库的创建与连接

    在上面的章节里只做了数据的收集、整理和加工。并没有对数据库进行操作 ,而应用程序一般都与数据库有着密切的联系,所有表的创建都要在数据库中保存才能被程序调用。因此,数据库管理在应用程序开发的初级阶段是非常关键的。下面对数据库进行操作。通过MySQL 的第三方管理软件phpMyAdmin 建立数据库,命名为my_db,创建完数据库后,便可以在创建的数据库中进行所需的数据表的创建、编辑、删除等操作。由于系统绝大部分模块都需要操作数据库,因此将连接数据库的代码封装到一个php 文件中,需要链接数据库的模块直接引用该文件即可,减少代码冗余。该文件定义的连接数据库的函数是: 
   function DBconnect(){ 
   $conn=mysql_connect('localhost:3306','root','password');
   if($conn) mysql_select_db(my_bd);//my_db 为数据库名称 
   return $conn; 
 }

 5.   结论 
       开发一套即时通讯方案需要投入大量的人力物力,如果是公司商用的话,可以考虑商用的开发包,如(Anychat )  http://www.anychat.cn/  可以节约开发时间,缩短项目开发周期;节省开发费用;减少人力资源投入平台自主开发,目前Anychat正在做Android平台的移植,远期将支持Symbian、iPhone等平台。利用AnyChat SDK的跨平台特性,实现嵌入式硬件设备(ARM平台)与Internet上的Windows平台实现语音、视频的交互。现已支持Windows、Unix、Linux(x86)、Linux(ARM)以及Windows Mobile平台,实现嵌入式硬件设备(ARM平台)与Internet上的Windows平台实现语音、视频的交互。AnyChat SDK的跨平台特性。 随着开发工具的改进和数据库管理技术的提高。相信即时通讯软件也将不断向前发展,将更加成熟!




本文转自 fanxiaojun 51CTO博客,原文链接:http://blog.51cto.com/2343338/460405,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
区块链 图形学 wax
农场链游模式系统定制开发搭建技术实现
农场链游模式系统定制开发搭建技术实现
企业内部安全即时通讯软件工具一般需要哪些关键功能?
J2L3x 即时通讯软件具备以上的所有功能,是一款适用于员工内部沟通的多功能通讯工具,方便员工内部沟通和文件传输。适合企业办公使用。欢迎免费体验。
企业内部安全即时通讯软件工具一般需要哪些关键功能?
|
负载均衡 安全 测试技术
洽谈区块链游戏项目系统开发逻辑讲解方案及技术参考原理
洽谈区块链游戏项目系统开发逻辑讲解方案及技术参考原理
226 0
|
JavaScript CDN
手机直播系统的互动功能如何实现
手机直播系统的互动功能如何实现?
带你读《好设计,有方法:我们在搜狐做产品体验设计》之二:有源设计
那些激动人心、让人拍手叫好的设计,到底有没有方法可循?背后到底有没有设计理论支撑?答案是肯定的!本书作者是资深体验设计专家,拥有超过10年的产品体验设计和团队管理经验,他们将试图为大家总结和揭示那些优秀设计背后的理论和方法。
|
iOS开发 Android开发 UED
带你读《好设计,有方法:我们在搜狐做产品体验设计》之三:区分不同载体的设计
那些激动人心、让人拍手叫好的设计,到底有没有方法可循?背后到底有没有设计理论支撑?答案是肯定的!本书作者是资深体验设计专家,拥有超过10年的产品体验设计和团队管理经验,他们将试图为大家总结和揭示那些优秀设计背后的理论和方法。
|
移动开发 前端开发 中间件
如何去设计前端框架能力?星巴克消息开放项目从0到1,从点到面的思考
# 如何去设计前端框架能力 - 双十二在星巴克消息开放支持点到面的思考 PS:本文会有点长,自己项目中总结和思考,看了本文希望对大家有帮助,**希望让业务分享更加有价值** 背景参考上一篇文章[手淘千牛IM即时通信 - 星巴克消息开放实践](https://www.atatech.org/articles/125468) ## 摘要 > 从满足星巴克项目需求单点出发,发散到从点到面的思考。
2337 0
|
机器学习/深度学习 新零售
车智汇模式系统技术开发数据
如果说你看到了----这套系统模式的优势,那你会是想要自己也做一个类似的系统模式,自己来操作,看到一个系统模式的优势所在你就是他的领航者。
2830 0