本项目基于 WebRTC,WebSocket 实现了一个聊天系统
目录
本项目基于 WebRTC,WebSocket 实现了一个聊天系统 1
一、引言 1
1. 背景 1
2. 要求 2
3. 目标 2
4. 相关介绍 2
二、需求分析 4
1. 业务调查 5
2. 系统的目标(含新系统的功能需求、性能需求、输入输出需求) 5
三、系统分析 6
1. 子系统划分 6
2. 系统业务流程 7
3. 系统数据流程 9
4. 系统的数据字典 12
四、系统设计 12
1. 系统配置设计 12
2. 程序数据结构设计 16
3. 系统结构设计 26
4. 系统功能模块设计 27
5. 编码设计 44
6. 数据库设计 44
五、系统测试 45
1. 功能性测试 45
2. 安全性测试 55
六、课程设计总结 57
参考资料 57
附件说明 57
一、引言
1. 背景
实时聊天愈加火爆,但是网页版的实时聊天不多,并且很少有支持视频聊天功能的。
HTTPS 协议使得消息可以在安全信道传输。
WebSocket 使得浏览器也可以建立持久连接,使得频繁发送和接收消息的成本降低。
WebRTC 协议是 P2P 协议,使得在传输视频数据时降低了服务器的压力,视频聊天便于实现。
2. 要求
界面友好,可扩展性强,稳定性强,并且要有一定的安全性
3. 目标
传输协议基于 SSL,HTTP/1.1,WebSocket,WebRTC 实现了一个简易的支持视频聊天、表情、图片的实时消息系统。
4. 相关介绍
1.
base64
2.
用字符串代表二进制序列,4 个字节可以代表二进制序列三个字节。
3.
用字符 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 代表 0~63 数字,如果二进制序列的字节数不是 3 的倍数,用 0 填充,base64 序列用=填充。
4.
本项目的消息使用 base64 编码传输。
5.
6.
Http/1.1
7.
即超文本传输协议-版本 1.1,允许发送流水线请求,并且相比 Http1.0 开销大大降低。
8.
9.
WebSocket
10.
WebSocket 允许浏览器和服务器之间打开交互式通信会话(即持久化连接),而无需通过轮询服务器以获得响应。
11.
本项目聊天部分用到了 WebSocket。
12.
13.
WebRTC
14.
WebRTC(Web Real-Time Communications)是一种实时通信技术,它允许网络应用或者站点,不通过任何第三方媒介建立 P2P 连接,用以传输音频,视频等其它任何数据,减少服务器压力。
15.
本项目视频聊天功能用到了 WebRTC。
16.
17.
SDP
18.
SDP(Session Description Protocol)是一个描述 peer-to-peer 连接的标准,SDP 包含音视频的编解码,源地址,时间等信息。
19.
SDP 也是 WebRTC 的组件之一,用于描述一个会话。
20.
21.
ICE
22.
ICE(Interactive Connectivity Establishment)是一个被 WebRTC 应用的框架,即使两端位于 NAT 后面,这个协议可以让两端互相找到对方并建立连接。
23.
ICE 使用以下算法寻找最低等待时间路径去连接两端,通常为以下顺序
24.
1.直接 UDP 连接
2.直接 TCP 连接(HTTP)
3.直接 TCP 连接(HTTPS)
4.间接通过中继器连接(存在位于防火墙后面的一方,无法进行 NAT 穿越)
25.
信令服务器
26.
WebRTC 中交换视频请求和响应,交换 ICE 候选时用的服务器。服务器收到视频相关消息只是简单地转发它们,为两端建立连接提供信息。
27.
28.
STUN 服务器
29.
通过 STUN 服务器,客户终端可以发现他们的 IP 地址,以及 NAT 相关信息,为 NAT 穿越提供信息。