基于WebSocket的WebIM聊天平台设计与实现——需求分析

future star 2021-12-24 19:55:23

一、项目概述

即时通讯(Instant messaging,IM)是一个终端服务,允许两人或多人使用网络即时地传递文字信息、档案、语音与视频交流。Web即时通信(Web IM)是基于浏览器构建的即时通信。随着互联网的迅速发展,网络交友、电子商务、线上办公等逐渐成为生活日常,多样化的线上交流需求催生出各式各样的即时通讯工具。QQ、微信等跨平台多功能即时通讯工具的出现,极大地简化了人们的日常交流。疫情期间,人们的出行受到限制,用于特定用途的IM工具如钉钉、飞书等得到了广泛的应用。即时通讯工具已经渗透进我们生活的方方面面,充分地学习IM相关技术并理解其中原理成为软件工程学习的一项重要环节。

二、需求分析

2.1 功能性需求分析

2.1.1 用户功能需求分析

业务流程图:

 用户用例图:

注册与登录

未注册用户可以注册自己的账号,已注册用户可以输入账号信息进行登录,结束业务后,可以登出,退出系统。

账号管理

用户可以修改查看自己的个人信息,修改自己的信息,如昵称、头像、密码等。

好友管理

用户可以通过输入好友的昵称、id等信息进行精确查找其他用户,将该用户加入自己的联系人列表,若好友已在列表中,也可以删除该好友。

群管理

用户可以自己创建一个新的群,其他用户可以通过房间号或房间名等信息查找到该房间并将该房间添加到自己的群列表,若已在群中,也可以退出该群。

聊天功能

用户可以选择一个已在列表中的好友或群进行聊天,可以发送文字、图片、表情包等不同格式内容,每次登录时,还需要同步未读消息。

2.1.1 管理员功能需求分析

管理员用例图:

数据库管理

管理员可以查看各种数据信息,也可以修改这些信息。

用户管理

管理员可以管理所有用户和群,可以注销所有用户和群。

2.2 非功能性需求分析

可扩展性

系统需要提供良好的可扩展性,在开发时,页面样式风格、代码书写方式尽可能保持一致,为以后可能的功能扩展提供方便。

简洁明了

客户端页面的设计要求简洁明了,务必做到让用户一眼就能明白如何操作。

健壮性

系统的运行要维持稳定,在设计和测试功能时,要考虑各种可能报错的情况并做出相应处理,防止系统崩溃。

即时通信

本项目的最主要的目标就是即时通讯,所以在开发时,要考虑到即时性问题,尽量减少延迟,减少响应时间。

三、系统概要设计

3.1 模块划分

    • 登录模块:主要包括用户登录、注册和登出。

    • 用户模块:主要包括用户信息的查询与修改,如查询或修改昵称、头像、密码等。

    • 联系人模块:主要包括添加、删除好友或群。

    • 通信模块:主要包括单聊和群聊,用户在登录后可以看到未读消息,此外还包括历史消息存储与查询。

    3.2 系统架构

     

    3.3 交互流程

     

    四、开发与测试

    4.1 主要技术栈

    • 前端:HTML、CSS、JavaScript、React.js、Ant Design、axios
    • 后端:Node.js、Koa
    • 其他:WebSocket、MySQL

    4.2 测试方案

    • 模块开发阶段——单元测试;
    • 模块集成阶段——集成测试;
    • 重构完善阶段——系统测试;
    • 交付验收阶段——验收测试。

     

    五、设计模式

    5.1 单例模式

    服务端连接数据库,全局只创建一个数据库对象。

     5.2 外观模式

    所有服务端返回给客户端的数据都采用一致的数据格式。

     5.3 中介者模式

    这个项目整体采用了中介者模式,采用MVC架构,控制器就是模型和视图的中介者。

     

    作者:322

    ...全文
    588 回复 打赏 收藏 转发到动态 举报
    写回复
    用AI写文章
    回复
    切换为时间正序
    请发表友善的回复…
    发表回复

    571

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
    软件工程 高校
    社区管理员
    • 码农孟宁
    加入社区
    • 近7日
    • 近30日
    • 至今

    试试用AI创作助手写篇文章吧