web即时聊天系统的实现
第【3】页
项目需求分析
现在才来进行分析为了大概对需要的知识进行预测,明确项目的大略内容,毕竟项目需求是我自己提出来的,具体的需求在我内心已经知晓。进行需求分析并罗列,是为了明确目标,避免在做的过程中遗漏和将需求做大的情况。
首先,本项目不是单纯的类似qq的即时通讯,而是社交网站的聊天功能。
项目功能
- 注册、登录功能
- 私聊功能,可以通过添加好友或者关注的用户进行私聊,聊天记录保存
- 公屏聊天功能,聊天记录不保存
- 群聊、粉丝支援团群聊天,粉丝群聊成员名单,通过关注和同意加入可参与群聊
- 支持图片发送,表情
- 消息推送,如果用户在离线收到消息,会在登录系统时推送给用户
这是本项目最终实现的功能的要求,也许做到最后会有所更不同,不过系统会迭代的,有机会再说吧。
项目准备
根据现有javaEE知识(我的学校课程只教授了javaEE相关的知识),划分一下职能,明确需要完成的任务
- 数据库
- 数据库的设计与创建
- 数据库
- 服务器
- 数据库访问对象(DAO)
- 业务逻辑处理
- 控制器
- 通讯服务服务器端模块
- 客户端
- 前端交互界面(UI)
- 逻辑处理
- 交互组件
- 通讯服务客户端模块
本系统前后端分离,数据交互使用JSON为载体(json独立于平台,前台JavaScript就能直接处理数据了,也不用写解释器,比XML方便,后台语言都对json支持)
因为我目前为止也不是清楚具体的流程是怎样的,摸索着做着先,做出来的东西估计也得修修改改才可能接近需求,为了较少踩坑的次数,故才有这次的项目设计记录。按照既定思维,既然对需求有了大致的了解,那就是从数据库开始入手,具体会在实现篇记录。
传输数据格式
//上一篇的前端发送的通讯数据格式大致如下
{
"username":"user", //消息发送者
"to":"xxxx", //消息需要推送对象
"msg":"message", //消息发送内容
"type":2, //消息类型
"time":"xxxx-xxxx-xxxx-xxxx" //发送时间
}
//type类型以后再进行详细规定
项目需要的框架
提及的都可以来了解一下,毕竟真正做起来需要用到什么技术也很难预测。
前端
我比较喜欢自己写css3代码来进行UI设计,boostrap不是很符合我的口味,使用原生JavaScript结合HTML5、CSS3编写组件。
后端同学,使用框架就比较省事,推荐使用boostrap,boostrap中文网:https://www.bootcss.com/,boostrap教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html
而Node.js,Vue,React、Angular 2 等,这些前端框架有兴趣可以看看,如果走前端路线的,这些框架是必学一个的。
推荐使用ElementUI,饿了么团队基于Vue开发的一套带组件的样式框架。
后端
servlet加jsp是基础的了,不过现在一般不用这个设计了,不仅麻烦而且工程量巨大,使用框架就很好的解决了一些坑
例如:
- spring+springMVC+MyBatis
- struts+spring+hibernate百度百科
- springboot微服务+MyBatis
依赖管理
- maven:这个很好的解决了到处下载jar包的坑,使用maven可以自动导入jar包,maven依赖查询:https://mvnrepository.com/,教程:https://www.runoob.com/maven/maven-tutorial.html
- gradle:跟maven比较类似,不过可以免去繁琐的xml配置
数据库
- 采用结构化数据语言SQL语句,搭载MySQL数据库管理系统
- mongDB非结构化数据库,可能会使用他进行聊天记录数据的存储
- Redis非结构化数据库,用来辅助数据存储
数据交互格式
- json
开发工具与运行环境
- MyEclipse:我使用MyEclipse进行后端开发的,没办法怀旧(bushi)
- Intellij IDEA:推荐使用,当你用起来就会觉得比MyEclipse方便得多,提高开发效率。
- sublime:我使用sublime文本编辑器编写HTML、css3、JavaScript,轻量
- MySQL数据库管理系统、Navicat Premium可视化界面
- 前端运行环境web服务器:Apache或者Nginx
- 后端运行环境应用服务器:weblogic、Tomcat等等
搭建运行环境:嫌麻烦的话可以使用集成环境phpstudy,安装包下载:https://www.xp.cn/
因为我们需要使用基于java语言的,所以需要用到应用服务器weblogic或者Tomcat,当然使用springboot微服务就不用预先装应用服务器了
至于Web服务器和应用服务器的区别,可自行百度
[2019-10-27]