目录
摘 要 III
ABSTRACT IV
第一章 引言 1
1.1 即时通信系统基本概念 1
1.2 即时通信系统的发展历程 1
1.3 系统研究目的和意义 1
1.4 系统可行性分析 2
第二章 相关技术介绍 3
2.1 TCP/UDP协议 3
2.2 WebSocket协议 3
2.3 服务器模型 4
2.3.1 同步 4
2.3.2 复制进程 4
2.3.3多线程 5
2.3.4 事件驱动 5
2.4 TLS/SSL协议 5
2.5编程语言 5
2.5.1 C++ 5
2.5.2 Nodejs 6
2.6 开源库 6
2.6.1 Boost C++ Libraries 6
2.6.2 Openssl 7
2.6.3 Protobuf 7
2.6.4 Hiredis 7
2.6.5 Socket.io 7
2.7 开发相关工具 8
2.7.1 Redis 8
2.7.2 Sqlite 8
2.7.3 Nginx 8
2.7.4 Visual Studio 2013 8
2.7.5 Visio 2013 9
第三章 即时通信系统的设计 10
3.1 即时通信系统功能描述 10
3.2服务器设计 11
3.3数据库设计 11
3.4主要的消息时序图 12
3.4.1 未读消息时序图 12
3.4.2点对点私聊时序图 13
3.4.3群聊消息时序图 14
3.5网络处理设计 15
3.5.1封包 15
3.5.2拆包 16
3.6负载均衡设计 17
3.7网络安全设计 18
第四章 即时通信系统的实现 19
4.1主要类和文件说明 19
4.2系统部分截图 23
第五章 即时通信系统的测试 26
5.1测试目的和任务 26
5.2测试流程 26
5.3 功能测试用例 27
第六章 结论和展望 28
6.1 结论 28
6.2 进一步工作的方向 28
参考文献 29
致谢 30
第三章 即时通信系统的设计
3.1 即时通信系统功能描述
随着web的发展,在HTML5标准中提出了Websocket protocol协议。它实现了浏览器与服务器全双工通信(full-duplex)。为用户提供能够通过客户端和web端接入的即时通信平台,让用户体验传统客户端和HTML5标准结合带来的超爽体验,方便人们之间的信息交流,创建新型沟通文化,提升人们生活的效率。
该系统具有私聊,群聊,消息通知、离线消息存储,上下线通知等基本功能,同时保证数据通信的即时性以及通信过程和消息存储的安全性。
图3.1 用户用例图
3.2系统总体设计
TCP服务器和客户端采用C++编写,通过TCP协议与服务器连接并由SSL安全传输层保证安全,实现即时通信。浏览器端通过HTML5中提出的Websocket协议与服务器连接,Websocket服务器和HTTP服务器采用Nodejs编写。不同物理服务器,不同语言服务器采用统一的数据传输格式来传输,借助redis数据库的Pub/Sub模式和消息队列,来进行服务器之间的信息通信。http://www.biyezuopin.vip/onews.asp?id=12312对数据库进行Master/Salve备份。
图3.2 服务器设计图
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<title><%= title %></title>
<link rel='stylesheet' href='../css/style.css' />
<link rel="stylesheet" href="../css/Nav.css" />
</head>
<body>
<div>
<nav class="first">
<ul>
<li><a href="/">主页</a></li>
<li><a href="/chat">聊天室</a></li>
<li><a href="/">临时聊天室</a></li>
<li><a href="">个人主页</a></li>
</ul>
</nav>
</div>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
</body>
</html>